dart - ViewChild 为 null 因为它不在 dom (NGIF) 中,有没有办法编写一个函数在找到时运行?
问题描述
我的设计:
我有一个利用 NGIF 的选项卡,因此子内容不在 dom 中。问题是内部组件需要设置订阅。有没有办法让我的 ViewChild 在不为空时可以运行函数?
@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
一个二传手:
MyCustomClass _foo;
@ViewChild("fooId")
set foo(MyCustomClass value) {
_foo = value;
...
}
推荐阅读
- java - 在服务器端拦截 RMI 调用
- mysql - LOAD DATA INFILE 和空间数据
- excel - 使用 VBScript 删除 Excel 工作表
- java - 在 IBM Notes 中发送 HTTPS 帖子时出现 SSLHandshakeException
- istio - Istio virtualService 是否总是需要 DestinationRule?
- actionscript-3 - AS3 hitTestObject 不工作
- c# - 带有 ClientTemplate Kendo Grid 的可空布尔值
- qlikview - 主脚本中无法识别的别名
- vba - 如何将单个值组合从三列复制到不同的工作表
- java - 如何使用在它之外的匿名类中定义的方法?