【发布时间】:2015-06-15 18:18:20
【问题描述】:
我在网上搜索了一个更改浏览器 url 的 angular2 路由器示例。当我们更改不同的路线时,所有示例都不会更改浏览器 url。你能给我一个 ES6 中的小例子来证明这一点吗?
【问题讨论】:
我在网上搜索了一个更改浏览器 url 的 angular2 路由器示例。当我们更改不同的路线时,所有示例都不会更改浏览器 url。你能给我一个 ES6 中的小例子来证明这一点吗?
【问题讨论】:
一个example。
在组件类上:
@RouteConfig([
{ path: '/', name: 'home', component: Home },
{ path: '/dashboard', name: 'dashboard', component: Dashboard },
{ path: '/todo', name: 'todo', component: Todo }
])
export class App {}
name 不是必需的,但可用于提供别名。
在模板中:
<a router-link="home">Home</a>
请注意,router-link 必须存在于 <a> 标记上。
【讨论】:
在深入研究 Angular2 源代码后,我找到了一种让动态路由工作的方法。让我们看看这个例子:
import {Router} from 'angular2/router';
@Component({
...
})
export class SampleComponent {
public router: Router;
constructor(router: Router) {
this.router = router;
}
goTo(uri) {
this.router.navigateByUrl(uri);
}
}
【讨论】:
在您的单元测试中,您会执行类似 ..
的操作spyOn(instance.router, 'navigateByUrl'); // first thing inside it block
expect(instance.router.navigateByUrl).toHaveBeenCalledWith(uri); // near end of it block when you would have expected the navigation to have happened
【讨论】: