如何以角度 2 将动态数据从 parent 传递到 child
how to pass dynamic data from parent to child in angular2+
我们知道,在 angular parent 到 child 中使用 @Input 装饰器进行通信,但是如何将动态数据从 parent 传递到 child.for示例 'name' 属性 在 parent 中定义,它的值动态变化并更新我们将在 child 组件中使用的 'name' 的值 那么如何实现它没有服务。
您可以使用 ngOnChanges 生命周期在子组件中观察您的输入变化
在你的子组件中你应该implements OnChanges
ngOnChanges(changes: SimpleChanges): void {
for (let propName in changes) {
let change = changes[propName];
if (propName === "YOUR_INPUT_NAME") {
this.YOUR_INPUT_NAME = (change.currentValue);
}
}
}
您可以使用服务在父项更改时获取子项的更新值。
为此,您需要在可观察类型的服务中声明变量。
您的 myService.service.ts 将具有以下代码:
@Injectable()
export class myService {
myInput:BehaviorSubject<boolean> = new BehaviorSubject(false)
}
现在从您的父组件更改此 myInput 的值,方法是:
myServie.myInput.next(true)
并在您的子组件中使用以下方式订阅此变量:
myService.myInput.subscribe((data)=>{console.log(data)})
在父组件和子组件中,在构造函数的参数中添加行private mySerivce:MyService
。
我们知道,在 angular parent 到 child 中使用 @Input 装饰器进行通信,但是如何将动态数据从 parent 传递到 child.for示例 'name' 属性 在 parent 中定义,它的值动态变化并更新我们将在 child 组件中使用的 'name' 的值 那么如何实现它没有服务。
您可以使用 ngOnChanges 生命周期在子组件中观察您的输入变化
在你的子组件中你应该implements OnChanges
ngOnChanges(changes: SimpleChanges): void {
for (let propName in changes) {
let change = changes[propName];
if (propName === "YOUR_INPUT_NAME") {
this.YOUR_INPUT_NAME = (change.currentValue);
}
}
}
您可以使用服务在父项更改时获取子项的更新值。
为此,您需要在可观察类型的服务中声明变量。 您的 myService.service.ts 将具有以下代码:
@Injectable()
export class myService {
myInput:BehaviorSubject<boolean> = new BehaviorSubject(false)
}
现在从您的父组件更改此 myInput 的值,方法是:
myServie.myInput.next(true)
并在您的子组件中使用以下方式订阅此变量:
myService.myInput.subscribe((data)=>{console.log(data)})
在父组件和子组件中,在构造函数的参数中添加行private mySerivce:MyService
。