未在Angular 2中设置子组件值?

时间:2018-07-12 14:15:15

标签: html angular

因此,我将子组件的值标记为:

@Input flag;

然后在特定方法中,我有:

myParentComponent.flag = true;

然后在父组件的html中:

<app-childComponent-template [flag] = flag ></app-childComponent-template>

我正在使用Chrome的检查工具来查看记录更改的控制台。但是,当我在子组件中将标志设置为true时,它会起作用,但是不会继承到父组件,因此我不知道为什么。我已经多次阅读过本文档(https://angular.io/guide/component-interaction),但似乎一切都相符了。

谢谢!

1 个答案:

答案 0 :(得分:3)

语法[flag]表示它是单向数据绑定:父级会将对flag的更改推送给子级。但是更改子级的@Input flag变量不会对父级发出更改。

为此,您需要在子组件中使用@Output

@Input('flag') flag;
@Output('flag') flagChanged = new EventEmitter<boolean>();

然后,要通知父级该标志已更改,请从子级组件发出一个事件:

this.flagChanged.emit(newFlagValue);

最后,要通知其父组件的更改:

<app-childComponent-template [flag]="flag" (flag)="onFlagChanged($event)"></app-childComponent-template>

onFlagChanged(newValue) {
    alert(`New flag value: ${newValue}`);
}