Angular 5 - 输入文本和 ngModel 的奇怪行为
Angular 5 - Strange behaviour with input text and ngModel
接受这个基本输入
<form (submit)="input_button($event)">
<input
type="text"
[(ngModel)]="input_text"
name="code"/>
<br/>
<input
type="submit"
value="Ok"/>
</form>
{{input_text}}
在您的组件中使用一个简单的字符串 input_text。
它的工作,很好。双向数据绑定正在运行,您可以在按钮下方看到您输入的值。
现在,将组件中的 input_text 替换为
input_text:Array<string> = ['A', 'B', 'C', 'D'];
然后在您的模板中试试这个:
<form (submit)="input_button($event)">
<input
*ngFor="let text of input_text; let i = index"
type="text"
[(ngModel)]="input_text[i]"
name="code_{{i}}"/>
<br/>
<input
type="submit"
value="Ok"/>
</form>
{{input_text}}
您有 4 个输入,以及初始化 ez(使用正确的名称)。
但是,当您尝试将文本放入字段中时,您失去了焦点并且 input_text 数组未更改({{input_text}} 始终显示相同的数组)
用 [(ngModel)]="text" 替换 [(ngModel)]="input_text[i]" 什么都不做
谁能解释一下这里发生了什么?
非常感谢!
尝试在您的组件 input_text: Array<object> = [{name: 'A'}, {name: 'B'}, {name: 'C'}, {name: 'D'}];
和 运行 中初始化此代码:
<form (submit)="input_button($event)">
<input
*ngFor="let text of input_text; let i = index"
type="text"
[(ngModel)]="input_text[i].name"
name="code_{{i}}"/>
<br/>
<input
type="submit"
value="Ok"/>
</form>
{{input_text | json}}
好吧,trackBy 正在运行,但 {{input_text}} 不会触发,因为它是一个对象
感谢大家的帮助
接受这个基本输入
<form (submit)="input_button($event)">
<input
type="text"
[(ngModel)]="input_text"
name="code"/>
<br/>
<input
type="submit"
value="Ok"/>
</form>
{{input_text}}
在您的组件中使用一个简单的字符串 input_text。 它的工作,很好。双向数据绑定正在运行,您可以在按钮下方看到您输入的值。
现在,将组件中的 input_text 替换为
input_text:Array<string> = ['A', 'B', 'C', 'D'];
然后在您的模板中试试这个:
<form (submit)="input_button($event)">
<input
*ngFor="let text of input_text; let i = index"
type="text"
[(ngModel)]="input_text[i]"
name="code_{{i}}"/>
<br/>
<input
type="submit"
value="Ok"/>
</form>
{{input_text}}
您有 4 个输入,以及初始化 ez(使用正确的名称)。 但是,当您尝试将文本放入字段中时,您失去了焦点并且 input_text 数组未更改({{input_text}} 始终显示相同的数组)
用 [(ngModel)]="text" 替换 [(ngModel)]="input_text[i]" 什么都不做
谁能解释一下这里发生了什么?
非常感谢!
尝试在您的组件 input_text: Array<object> = [{name: 'A'}, {name: 'B'}, {name: 'C'}, {name: 'D'}];
和 运行 中初始化此代码:
<form (submit)="input_button($event)">
<input
*ngFor="let text of input_text; let i = index"
type="text"
[(ngModel)]="input_text[i].name"
name="code_{{i}}"/>
<br/>
<input
type="submit"
value="Ok"/>
</form>
{{input_text | json}}
好吧,trackBy 正在运行,但 {{input_text}} 不会触发,因为它是一个对象
感谢大家的帮助