won*_*rld 28 angular-routing angular
我使用Angular2 alpha39和Babel来转换ES6 JS文件.我没有使用打字稿.
我创建了一个正确显示的组件.我在模板上添加了一个路由器插座.当我运行应用程序时,我收到错误消息:
没有路由器提供商!(RouterOutlet - >路由器)
调用堆栈是:
以下是代码片段:
模板:
.... // Removed for brevity
<div class="contenttext">
<router-outlet></router-outlet>
</div>
.... // Removed for brevity
Run Code Online (Sandbox Code Playgroud)
组件文件:
import { Component, View, bootstrap, OnInit } from 'angular2/angular2';
import { RouteConfig, RouterOutlet, RouterLink } from 'angular2/router';
import 'reflect-metadata';
import 'winjs';
@Component({
selector: 'dashboard-app'
})
@View({
templateUrl: '../js/dashboard.html',
directives: [ ContentComponent, FamiliesComponent, RouterOutlet, RouterLink ]
})
@RouteConfig([
{ path: '/employees', component: EmployeesComponent, as: 'employees'}
])
class DashboardAppComponent implements OnInit {
constructor() {
}
onInit() {
WinJS.UI.processAll().done(function() {
var splitView = document.querySelector(".splitView").winControl;
new WinJS.UI._WinKeyboard(splitView.paneElement);
})
}
}
bootstrap(DashboardAppComponent);
Run Code Online (Sandbox Code Playgroud)
Par*_*ain 37
你必须使用:
我希望这肯定会对你有所帮助.
在释放alpha41之后:
ROUTER_BINDINGS已经改变了ROUTER_PROVIDERS.ROUTER_DIRECTIVES在组件注释中的directives属性中导入.Router-link期望该值是路由名称的数组.了解更多信息.请参考这里.更多信息有关路由可以参阅本教程在这里.
(根据alpha-47所有生命周期钩子改名为.)
onActivate,onReuse,onDeactivate,canReuse,canDeactivate
至 : -
routerOnActivate,routerOnReuse,routerOnDeactivate,routerCanReuse,routerCanDeactivate
router-link 改为 routerLink
和routeconfig属性更改为:
{path: '/abc', component: ABC, as: 'abc'}
至:
{path: '/xyz' , component: XYZ, name: 'xyz'}
RC中的路由有很多变化在RC之后,其中一些点我在这里提到可以帮助某人: -
angular2/router已更改@angular/router
(也可以使用导入的旧功能,@angular/router-deprecated但现在我们必须使用@angular/router).
@RouteConfig已经改变了@Routes.
例如 :-
@Routes([
{path: '/crisis-center', component: CrisisListComponent},
{path: '/heroes', component: HeroListComponent}
])
Run Code Online (Sandbox Code Playgroud)
routerInjectables 被重命名为 ROUTER_BINDINGSROUTER_BINDINGS 被重命名为 ROUTER_PROVIDERS使用ROUTER_PROVIDERS
ROUTER_PROVIDERS 用于简化路由器的引导.
这包括:
RouterRegistry - 注册路线的集合LocationStrategy = PathLocationStrategy - 按路径匹配ROUTER_PROVIDERS除非您需要不同的路线,否则应提供"理智"默认值LocationStrategy.
更改:
bootstrap(DashboardAppComponent);
Run Code Online (Sandbox Code Playgroud)
至:
bootstrap(DashboardAppComponent, [
ROUTER_PROVIDERS
]);
Run Code Online (Sandbox Code Playgroud)
资料来源:
路由别名需要是CamelCase(技术上是PascalCase)
注意:Pardeep在#3下的答案中已经提到过这一点
如果要在模板中包含指向路径的链接,router-link则必须确保name路径的别名(即属性)为PascalCase.
如果您使用计划使用router-link修改路线:
{ path: '/employees', component: EmployeesComponent, name: 'Employees'}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在模板中添加以下链接:
<a [router-link]="['/Employees']">Employees Link</a>
Run Code Online (Sandbox Code Playgroud)
RouterLink 动态插入与路径路径匹配的href.
注意:阅读问题/ pr看起来这个更改是为了防止用户将<route-link>绑定与路由URL 混淆
资料来源:
小费:
如果要简化视图指令的使用 ROUTER_DIRECTIVES
这包括:
RouterLinkRouterOutlet更新:
在不久的将来,RouterOutlet/ <router-outlet>将被重命名为RouterViewport/<router-viewport>
资源:
更新2:
RouteConfig物业as已更名为name资源:
| 归档时间: |
|
| 查看次数: |
49268 次 |
| 最近记录: |