loadNextToLocation现在需要一个ViewContainerRef,关于如何以正确的方式获取应用程序的根viewContainerRef的任何想法?
提前感谢。
更新
我想从任何类或任何组件获取root viewContainerRef
答案 0 :(得分:12)
OLD WAY:Angular 2.0.0-rc.3
这是一个完全黑客攻击,绝不是获取根ViewContainerRef的正确方法,但我无法找到正式的方法来执行此操作。由于这些不是公共属性,因此可以随时更改,此方法将不再有效。此方法仍然适用于2.0.0-rc.3。
let destination = segue.destinationViewController
if let navcon = destination as? UINavigationController {
destination = navcon.visibleViewController!
}
if let hvc = destination as? TableViewController{
// do whatever
}
GitHub目前还有一个未解决的问题:https://github.com/angular/angular/issues/9293
更新:Angular 2.4.2
上述方法不适用于Angular的更高版本(从2.4.2开始)。
我现在使用的方法是:
在根组件中传递ViewContainerRef,以便稍后引用它:
class SomeComponent {
constructor(private appRef: ApplicationRef) { }
let viewRef: ViewContainerRef = appRef['_rootComponents'][0]['_hostElement'].vcRef;
}
然后在要获取根ViewContainerRef的组件或服务中:
class AppComponent {
constructor(public viewRef: ViewContainerRef) { }
}
以上内容将引入根组件的实例,并且由于您在构造函数中注入了ViewContainerRef(并使其公开),您现在可以直接引用它。
答案 1 :(得分:2)
我还没有尝试使用root组件,但我认为它与其他组件的工作方式相同:
class AppComponent {
constructor(private vcRef:ViewContainerRef) {}
}