ViewChild为null,因为它不在dom(NGIF)中,有没有办法在找到时写一个函数给运行?
ViewChild is null because it is not in dom (NGIF), is there a way to write a function to run when it is found?
我的设计:
我有一个利用 NGIF 的选项卡,因此子内容不在 dom 中。问题是内部组件需要订阅设置。有没有办法让我的 ViewChild 在不为 null 时可以 运行 一个函数?
@ViewChild("fooId")
MyCustomClass foo;
StreamSubscription sub = null;
对我来说,我在想我需要做某种 while 循环,延迟以定期检查 foo 看它是否不为空。
setUp() async {
while(sub == null){
if (foo != null){
sub = foo.onChanged.listen((_)=>_func());
}
await new Future.delayed(new Duration(seconds: 1));
}
}
但看起来有点脏。
有没有办法在您的 init 文件中进行设置以执行类似于以下操作的操作:
ngOnInit(){
// foo.when( () => foo !=null, (){
// sub = foo.onChanged.listen((_)=>_func());
// });
}
显然这是在伪代码中,但我认为可能有比某些轮询代码更好的选择,以便继续检查无效性。
使foo
成为setter:
MyCustomClass _foo;
@ViewChild("fooId")
set foo(MyCustomClass value) {
_foo = value;
...
}
我的设计:
我有一个利用 NGIF 的选项卡,因此子内容不在 dom 中。问题是内部组件需要订阅设置。有没有办法让我的 ViewChild 在不为 null 时可以 运行 一个函数?
@ViewChild("fooId")
MyCustomClass foo;
StreamSubscription sub = null;
对我来说,我在想我需要做某种 while 循环,延迟以定期检查 foo 看它是否不为空。
setUp() async {
while(sub == null){
if (foo != null){
sub = foo.onChanged.listen((_)=>_func());
}
await new Future.delayed(new Duration(seconds: 1));
}
}
但看起来有点脏。
有没有办法在您的 init 文件中进行设置以执行类似于以下操作的操作:
ngOnInit(){
// foo.when( () => foo !=null, (){
// sub = foo.onChanged.listen((_)=>_func());
// });
}
显然这是在伪代码中,但我认为可能有比某些轮询代码更好的选择,以便继续检查无效性。
使foo
成为setter:
MyCustomClass _foo;
@ViewChild("fooId")
set foo(MyCustomClass value) {
_foo = value;
...
}