2016-02-24 2 views
4

У меня есть main.component.ts код:
Его расположение: root/Угловое 2 Маршрутизатор Прямой доступ к URL

import {Component, OnInit, OnChanges, IterableDiffers} from 'angular2/core'; 
import {TypeService} from './type/type.service'; 
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router'; 
import {Router} from 'angular2/router'; 

@Component({ 
    selector: 'my-app', 
    providers: [], 
    directives: [ROUTER_DIRECTIVES], 
    template: ` 
     <a [routerLink]="['Type']">Type</a> 
     <router-outlet></router-outlet> 
    ` 
}) 

@RouteConfig([ 
    {path:'/type', name: 'Type', component: TypeService} 
]) 

export class AppComponent{ 
    constructor(private _router: Router){} 
} 

Тогда у меня type.component.ts код:
Его расположение: root/type

import {Component, OnInit} from 'angular2/core'; 
import {DirectoryComponent} from '../main/main.component'; 
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router'; 
import {Router} from 'angular2/router'; 
import {AppComponent} from '../app.component'; 
import {Http} from 'angular2/http'; 

@Component({ 
    selector: 'type', 
    directives: [ROUTER_DIRECTIVES], 
    template: `<h1>hi</h1>` 
}) 

export class TypeService{ 

    constructor(
    private _router: Router) {} 
    } 

Когда я нажимаю ссылку «Тип» в своем основном приложении, мне требуется root/type, и он загружает компонент типа. Однако, если я нажму reload, это даст мне ошибку Not Found.

Как это сделать, чтобы я мог напрямую обращаться к компонентам через URL-адрес?

ответ

2

Вам необходимо настроить сервер для обслуживания основного файла (обычно index.html), когда он не может найти запрошенный url. В зависимости от того, какой сервер вы используете, может быть .htaccess файл, промежуточное программное обеспечение, конфигурация маршрутизации и т. Д. Есть много похожих вопросов по SO, попробуйте найти ответ для вашего конкретного случая ...

+0

Есть ли что-то вроде иначе как в угловом 1.x? – Gary

+0

@Gary Я использую '{path: '/: unknown', redirectTo: ['/ Root']}', не уверен, есть ли лучший способ ... – Sasxa

+0

http://stackoverflow.com/questions/34381438/equal-of-angle-1-other-route-in-angular-2 https://github.com/angular/angular/issues/4055 Позвольте мне ответить на это формально. Наткнулся на эту проблему сам. – Gary

0

Я использовал HashLocationStrategy, чтобы исправить его ,

https://angular.io/docs/ts/latest/api/router/HashLocationStrategy-class.html

В main.ts:

import {bootstrap} from 'angular2/platform/browser' 
import {AppComponent} from './app.component' 
import {HTTP_PROVIDERS} from 'angular2/http'; 
import {ROUTER_PROVIDERS, 
    LocationStrategy, 
    HashLocationStrategy} from 'angular2/router'; 
import {provide} from 'angular2/core'; 

bootstrap(AppComponent, [ 
    HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    provide(LocationStrategy, {useClass: HashLocationStrategy}) 
]); 

Тогда будет корень/#/тип он принимает меня к моему типу компонента.

+0

Попробуйте это вместо другого. Он работает для меня, не уверен, но кажется, что работа продолжается. '@RouteConfig ([ {путь: '/ **', RedirectTo: [ 'MycmpnameCmp']}, ... } ])' https://github.com/angular/angular/issues/4055 – Gary

Смежные вопросы