Угловых 2: 2.0.0-alpha.44Как использовать дочерние маршруты в угловых версиях 2
Я пытался сделать маршрутизацию в угловых 2. Хотя я был в состоянии сделать нормальный маршрут сделать , я сталкиваюсь с некоторыми проблемами, когда я представляю детские маршруты. Вот пример на plnkr (http://plnkr.co/edit/Y5doqU1WcEe4Ldr7KfPJ)
Ниже приведен код для более подробной информации. Я пытаюсь добиться ниже маршрутизации
App
/\
/\
HomeCmp HelloCmp
\
\
ChildCmp
И ниже, как я настроил мои пути
import {bootstrap, bind, Component, View} from 'angular2/angular2'
import {RouteConfig, RouteParams, ROUTER_DIRECTIVES, APP_BASE_HREF, ROUTER_BINDINGS} from 'angular2/router'
@Component({
selector: 'child-cmp'
})
@View({
template: `
<div>
<h3>Whats up</h3>
</div>
`
})
class ChildCmp { }
// ************************ Hello Component ***********************************
@Component({
selector: 'hello-cmp'
})
@View({
template: `
<div>
<h2>Hello there !</h2>
<router-outlet></router-outlet>
</div>
`,
directives: ROUTER_DIRECTIVES
})
@RouteConfig([
{path: '/', component: ChildCmp, as: 'ChildCmp'}
])
class HelloCmp { }
//************************** HOME Component ***********************************
@Component({
selector: 'home-cmp'
})
@View({
template: `
<div>
<h2>Welcome Home</h2>
</div>
`
})
class HomeCmp {}
//************************* APP Component *************************************
@Component({
selector: 'app-cmp'
})
@View({
template: `
<div>
<h1>Hello {{message}}!</h1>
<a [router-link]="['./HomeCmp']">home</a>
<a [router-link]="['./HelloCmp']">hello</a>
<hr>
<router-outlet></router-outlet>
</div>
`,
directives: ROUTER_DIRECTIVES
})
@RouteConfig([
{path: '/', component: HomeCmp, as: 'HomeCmp'}
{path: '/hello/...', component: HelloCmp, as: 'HelloCmp'}
])
export class App {
message:string = 'world';
}
bootstrap(App, [
ROUTER_BINDINGS,
bind(APP_BASE_HREF).toValue(location.pathname)
]);
Когда я удалить дочерние маршруты это работает отлично. Но с детскими маршрутами я становлюсь ниже ошибки.
EXCEPTION: Link "["HelloCmp"]" does not resolve to a terminal or async instruction. in [null]
Я следил за упомянутой статьей here. Но не в состоянии заставить его работать. Кто-то может помочь? Спасибо
@Pradeep Jain спасибо. Что делать, если я хочу вызвать маршрут из кода и не использовать [router-link]? Как и в предыдущем примере, используйте router.navigate (['./ HelloCmp']). –
@Pradeep Получил это. Нам нужно использовать router.navigate (['./ HelloCmp', 'ChildCmp'). Это стало ясно после прочтения ссылки, предложенной вами. Также я нашел еще одну хорошую ссылку (https://angular.io/docs/js/latest/api/router/RouterLink-class.html) –
вы предоставите plunkr, показывающий использование router.navigate, поскольку u сказал, что вы сделали с этим. –