我想基于从AJAX调用接收的一些信息动态构建组件树.
如何以编程方式从其他组件内部向DOM添加组件?我有<outer-comp>,我想,基于一些逻辑,插入一个<inner-comp>.以下代码只是将元素插入<inner-comp></inner-comp>DOM,而不是实际<inner-comp>表示.
@NgComponent(
selector: 'outer-comp',
templateUrl: 'view/outer_component.html',
cssUrl: 'view/outer_component.css',
publishAs: 'outer'
)
class AppComponent extends NgShadowRootAware {
void onShadowRoot(ShadowRoot shadowRoot) {
DivElement inner = shadowRoot.querySelector("#inner");
inner.appendHtml("<inner-comp></inner-comp>");
}
}
Run Code Online (Sandbox Code Playgroud)
更新: 我设法以下列方式正确渲染内部组件,但我仍然不确定这是否正确:
class AppComponent extends NgShadowRootAware {
Compiler compiler;
Injector injector;
AppComponent(this.compiler, this.injector);
void onShadowRoot(ShadowRoot shadowRoot) {
DivElement inner = shadowRoot.querySelector("#inner");
inner.appendHtml("<inner-comp></inner-comp>");
BlockFactory template = compiler(inner.nodes);
var block = template(injector);
inner.replaceWith(block.elements[0]);
}
Run Code Online (Sandbox Code Playgroud)
}
我在Angular中编写单页应用程序,特别是angular.dart,但我假设这个问题仍然适用于AngularJS.
例如,以下路线:
/ login - 预计没有人登录.如果某人经过身份验证但未注册,则重定向到"注册"路由,如果已注册,则重定向到"主页"路由.
/ register - 期待尚未完成注册过程的经过身份验证的用户.如果未经过身份验证,请重定向到登录.如果已通过身份验证,请重定向到主页.
/ home - 期待经过身份验证和注册的用户.如果未经过身份验证,则重定向到"登录"路由,如果未注册,则重定向到"注册"路由.
我已经完成了相当多的搜索,但是在加载与特定路径关联的控制器之前无法找到内置或惯用的方法来确保满足某些先决条件,并且在不满足这些前提条件时适当地重定向.
任何帮助将不胜感激!