angular父组件给子组件传值,值不发生改变,ngOnchanges无法监听到
时间: 2023-10-08 16:04:31 浏览: 146
如果你在父组件中的属性值发生变化后没有触发`ngOnChanges`方法,有可能是因为你没有使用`@Input()`装饰器来定义输入属性。
在子组件中,你需要使用`@Input()`装饰器来定义一个输入属性,这样Angular才能知道这个属性是来自父组件的,并能够监听到它的变化。例如:
```typescript
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
@Component({
selector: 'app-child',
template: '<div>{{childValue}}</div>'
})
export class ChildComponent implements OnChanges {
@Input() parentValue: string; // 定义输入属性
childValue: string;
ngOnChanges(changes: SimpleChanges) {
if (changes.parentValue) {
this.childValue = changes.parentValue.currentValue;
}
}
}
```
在父组件中,你需要把要传递给子组件的值绑定到子组件的输入属性上。例如:
```html
<app-child [parentValue]="parentValue"></app-child>
```
这样,当`parentValue`的值发生变化时,`ngOnChanges`方法会被调用,并且你可以在里面获取到最新的值并进行相应的处理。
阅读全文