Ich laufe die Angular 2 Beta.0 und ich bin mit Routing herumspielen. Hier ist, was ichHashLocationStrategy erzeugt keine # Positionen beim Routing?
AppComponent haben:
import {Component, provide} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
import {FORM_DIRECTIVES, CORE_DIRECTIVES} from 'angular2/common';
import {Http, Response, HTTP_PROVIDERS} from 'angular2/http';
import {RouteConfig, Location, LocationStrategy, HashLocationStrategy, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router';
import {HomeComponent} from './components/home';
import {RowsComponent} from './components/rows';
import {ColumnsComponent} from './components/columns';
import {TableComponent} from './components/table';
@Component({
selector: 'app',
directives: [FORM_DIRECTIVES, CORE_DIRECTIVES, ROUTER_DIRECTIVES],
templateUrl: '/app/views/root.html',
providers: [ROUTER_PROVIDERS]
})
@RouteConfig([
{path:'/', name: 'Home', component: HomeComponent},
{path:'Rows', name: 'Rows', component: RowsComponent},
{path:'Columns', name: 'Columns', component: ColumnsComponent},
{path:'Table', name: 'Table', component: TableComponent}
])
class AppComponent {
public title = 'Responsive Layout';
public SelectedTab = 'Home';
constructor(location: Location) {
//location.go('Rows');
}
}
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy})
]);
Jedes Tutorial und API-Referenz-zu-Punkt scheint mir es nur tun, wie ich oben haben. Ich habe auch <base href="/app/" />
im Kopf meiner index.html. Hier sind meine RouterLinks
<ul class="nav navbar-nav">
<li [class.active]="SelectedTab=='Home'"><a [routerLink]="['Home']" (click)="SelectedTab='Home'">Home</a></li>
<li [class.active]="SelectedTab=='Rows'"><a [routerLink]="['Rows']" (click)="SelectedTab='Rows'">Rows</a></li>
<li [class.active]="SelectedTab=='Columns'"><a [routerLink]="['Columns']" (click)="SelectedTab='Columns'">Columns</a></li>
<li [class.active]="SelectedTab=='Table'"><a [routerLink]="['Table']" (click)="SelectedTab='Table'">Table</a></li>
</ul>
Das Routing verhält, wie es sollte. Ich bekomme keine Fehler. Wenn ich auf einen dieser Einträge in der Bootstrap-Navigationsleiste klicke, sehe ich, dass die Ansichten ausgewechselt wurden und die richtigen Vorlagen zeigen und dass ihre Komponenten ausgeführt wurden und an die sie gebunden sind. Trotz der Verwendung von HashLocationStrategy
in meinem bootstrap(...)
Aufruf sind die URLs immer noch "HTML5 Style": localhost:8080/app/Rows
, wenn es localhost:8080/app/#/Rows
sein sollte.
Ich glaube, ich muss den alten # basierten Weg verwenden, wenn ich möchte, dass meine Benutzer in der Lage sind, eine bestimmte Ansicht zu markieren und zu ihr zurückzukehren. Wenn ich für /app/Rows
erlaube, verursacht das Aktualisieren der Seite eine 404, da Rows
nicht in dem app
-Ordner vorhanden ist.
Ja, das Entfernen des Providers hat es behoben. Ich bin mir nicht sicher warum, aber das machte den Unterschied. –
gleich hier, entfernte router_providers von der Komponente, die den routerLink ausführt. Router_providers scheint nur in der Bootstrap-Komponente verwendet zu werden. – longday