要解决Angular的ngOnInit()属性不会更新值的问题,您可以尝试以下方法:
方法1:使用ngOnChanges()代替ngOnInit()
// 在组件类中添加ngOnChanges()方法
ngOnChanges(changes: SimpleChanges) {
// 在这里更新属性的值
if (changes.propertyName) {
this.propertyName = changes.propertyName.currentValue;
}
}
方法2:手动调用变更检测
import { ChangeDetectorRef } from '@angular/core';
constructor(private cdRef: ChangeDetectorRef) {}
ngOnInit() {
// 在这里更新属性的值
this.propertyName = newValue;
// 手动调用变更检测
this.cdRef.detectChanges();
}
方法3:使用rxjs的BehaviorSubject
import { BehaviorSubject } from 'rxjs';
// 在组件类中创建BehaviorSubject
propertyNameSubject: BehaviorSubject = new BehaviorSubject(null);
ngOnInit() {
// 在这里更新属性的值
this.propertyNameSubject.next(newValue);
// 订阅BehaviorSubject以获取更新的值
this.propertyNameSubject.subscribe(value => {
this.propertyName = value;
});
}
请注意,这些方法中的代码示例是一种通用的解决方法,您需要根据实际情况进行相应的修改和调整。