Angular 5 ngModel不会更新值

时间:2018-06-13 12:26:37

标签: javascript angular angular5 ngmodel

所以我有以下组件:

export class ModuleComponentComponent implements OnInit {
    dropzoneConf;
    fileService = environment.getFileUrl;

    constructor(
        private moduleComponentService: ModuleComponentService) {
    }

    @Input()
    selectedComponent: ModuleComponent;

    ngOnInit() {
        this.setDropZoneConfig();
    }    
}

并且我有以下html:

<h3 class="m-portlet__head-text m--font-success">
   <input class="form-control" type="text" [ngModel]="selectedComponent.title" />
</h3>

以及我在html中添加组件的方式:

<div class="col-lg-8 col-x1-12" *ngIf="selectedComponent != null">
   <app-module-component [selectedComponent]="selectedComponent"></app-module-component>
</div>

当我在输入字段中输入内容时,它不会更新selectedComponent.title变量

谁能告诉我发生了什么?

3 个答案:

答案 0 :(得分:6)

使用双向绑定

 [(ngModel)]="selectedComponent.title"

答案 1 :(得分:2)

我们需要使用[(ngModel)]

的双向数据绑定
<h3 class="m-portlet__head-text m--font-success">
   <input class="form-control" type="text" [(ngModel)]="selectedComponent.title" />
</h3>

You should read the part about two way data binding on Angular documentation

如果您只想使用 [ngModel] ,您可以使用(ngModelChange)

来捕捉更改
<h3 class="m-portlet__head-text m--font-success">
   <input class="form-control" type="text" [ngModel]="selectedComponent.title" (ngModelChanges)="setTitle($event)" />
</h3>

你可以用表格改进它,只要问我有关于那个的任何问题

答案 2 :(得分:1)

你应该使用双向数据绑定

  

[(ngModel)]

<input class="form-control" type="text" [(ngModel)]="selectedComponent.title" />
  

并确保在 app.module.ts

中导入表单模块
import { FormsModule } from '@angular/forms';