Angular11 中,还是@Input的问题
来源:5-8 使用 rxjs 打造倒计时组件
慕粉4019140
2020-11-22
组件采用了 startDate 和 futureDate 作为输入型属性,如果不给初始化值的话。
countDown$: Observable<string> = this.getCountDownObservable(this.startDate, this.futureDate);
这一行会提示 this.startDate 和 this.futureDate 应该要初始化
TS2729: Property 'startDate' is used before its initialization.
如果给初始化值的话,观察发现组件直接就用的初始化值,而没有采用父组件传过去的值。即初始化值优先级别反而更高。。这是第一个问题
如果不给初始化值的话,也可以解决,那就是把 getCountDownObservable 方法的代码重新放回到 ngOinit 片段中,父组件的赋值生效,倒计时功能正常。
请问老师, countDown$: Observable<string> = this.getCountDownObservable(); 这行代码在生命周期的哪个范围内,第一个问题提示应该要先初始化,是因为它在生命周期的比比 @Input 输入属性注入更早吗? 是组件先加载所有属性、方法后,才接收父组件的属性赋值吗?
写回答
1回答
-
接灰的电子产品
2020-11-23
ng11是否有变化还没去了解,现在项目比较紧,没来得及看。但之前的规则是,成员变量直接初始化属于构造阶段发生,如果在nginit中那么就在对应的init阶段赋值。父子组件渲染时,ng 其实是在对应生命周期循环所有子组件的对应生命周期,组件的属性设置会在init阶段之前的ngonchanges完成
00
相似问题
异步的问题
回答 1
angular使用内置管道问题
回答 3