Angular2 - Directive - NgControlNames

这个指令和NgControlGroup 代码上差不多

分析不同

OnChanges事件

如果之前没加到父级的group里那就加
如果有任何的model 属性变化,就调用updateModel

ngOnChanges(changes: {[key: string]: SimpleChange}) {
if (!this._added) {
this.formDirective.addControl(this);
this._added = true;
}
if (isPropertyUpdated(changes, this.viewModel)) {
this.viewModel = this.model;
this.formDirective.updateModel(this, this.model);
}
}

来自群主的解答
NgInIt 是在 第一次NgOnChanges后,所以不能用NgInIt

if (isPropertyUpdated(changes, this.viewModel)) {
this.viewModel = this.model;
this.formDirective.updateModel(this, this.model);
}

updateModel方法会用到当前this,所以必须在updateModel之前先添加进formDirective


这个更新方法将在 ng_form_model 和 ng_form 中说到

   viewToModelUpdate(newValue: any): void {
this.viewModel = newValue;
ObservableWrapper.callEmit(this.update, newValue);
}