AngularDart可以直接路由到组件吗?

AngularDart可以直接路由到组件吗?,dart,angular-dart,Dart,Angular Dart,我用的是安格拉镖和路线。我的视图是包含单个组件的一行程序。我觉得这些观点没有分量。我可以直接布线到组件吗 示例: router.root …addRoute( 姓名:'欢迎', 路径:'/welcome', defaultRoute:对, 输入:view('views/welcome.html')) …addRoute( 名称:'照相机', 路径:'/camera', 输入:view('views/camera.html'); 这里是视图/welcome.html 这里是视图/camer

我用的是安格拉镖和路线。我的视图是包含单个组件的一行程序。我觉得这些观点没有分量。我可以直接布线到组件吗


示例:

router.root
…addRoute(
姓名:'欢迎',
路径:'/welcome',
defaultRoute:对,
输入:view('views/welcome.html'))
…addRoute(
名称:'照相机',
路径:'/camera',
输入:view('views/camera.html');
这里是
视图/welcome.html


这里是
视图/camera.html



正如你所看到的,这些观点是相当薄弱的。我更愿意说:“当你进入一个视图时,插入这个组件”


有可能吗?

我也想问同样的问题,但你是第一个!我找到了一个解决方案,可能不是最好的,但至少它是有效的

我为所有路线创建了一个html:

dyn_view.html:


当然还有一个组件动态视图,它从路由提供程序获取实际的组件标记名,并使用下面描述的技术动态添加到DOM中:

dynamic_view.html


动态视图.dart

@NgComponent(
选择器:“动态视图”,
templateUrl:'view/dynamic_view.html'
)
类DynamicView实现了NgShadowRootAware{
编译程序;
注入器;
字符串元素名;
DynamicView(this.compiler、this.injector、RouteProvider提供程序){
elementName=provider.parameters[“elementName”];
}
void onShadowRoot(ShadowRoot ShadowRoot){
DivElement内部=shadowRoot.querySelector(“div”);
inner.appendHtml(“”);
BlockFactory模板=编译器(内部.nodes);
var块=模板(注入器);
inner.replaceWith(block.elements[0]);
}
}
现在是路由器。元素名称必须以某种方式传递给RouteProvider。我受到了这篇文章的启发:

动态视图工厂类{
视图工厂视图工厂;
DynamicView工厂(this.viewFactory);
调用(字符串元素名称){
返回(RouteEvent事件){
事件.参数[“elementName”]=elementName;
viewFactory(“view/dyn_view.html”)(事件);
};
}
}
类MyRouteInitializer实现RouteInitializer{
初始化(路由器,视图工厂视图){
DynamicView工厂动态视图=新的DynamicView工厂(视图);
根路由器
…addRoute(
名称:“路由1”,
路径:'/a/:b',
输入:dynView('componentA'))
…addRoute(
名称:'route2',
路径:'/b/:c',
输入:dynView(“组件B”);
}
}
上面的代码与我实际使用的代码略有不同,因此可能会有一些小错误,但总体思路是相同的


希望有帮助

这似乎现在得到了直接支持

您可以路由到内联模板(
viewHtml
):

views.configure({
“foo”:ngRoute(
路径:'/foo',
视图HTML:“”)
});

酷!我想知道你是否可以把它作为一个酒馆的包装,这样我和其他人就可以使用它了。如果你发布了它,请让我知道。你的模块看起来怎么样?我没有将RouteProvider注入DynamicView。我的应用程序基于Angular教程:。该模块如下所示:“类MyModule扩展模块{MyModule(){type(QueryService);type(DynamicView);//组件类型(ApplicationComponent);type(ScreenComponent);…类型(RouteInitializer,由MyRouteInitializer实现);factory(NgRoutingUsePushState,()=>newngroutingusepushstate.value(false));}}另一个答案更好,因为添加了一些功能。