ViewChild为null,因为它不在dom(NGIF)中,有没有办法写一个找到后要运行的函数?

时间:2018-07-20 15:05:35

标签: dart angular-dart

我的设计:

我有一个利用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());
  // });
}

很明显,这是在伪代码中,但是我认为可能有比某些轮询代码更好的选项,以便继续检查空性。

1 个答案:

答案 0 :(得分:2)

设置foo的设置者:

MyCustomClass _foo;

@ViewChild("fooId")
set foo(MyCustomClass value) {
  _foo = value;
  ...
}