私は角度2を学習していて、子ルートを設定することに固執しています。角2:子ルートが機能しない
シンプルなToDoアプリを構築しようとしていて、新しいアイテムを追加するルートを設定できませんでした。
これは私が取得しようとしているもので、 'todo/add'リンクが機能していないため、404エラーを表示し続けます。
例:
- ローカルホスト/ TODO
- ローカルホスト/ TODO /追加
Iはapp.module.tsにtodo.module.tsを添加しました。私がテストした
app.module.ts TODO /追加
todo.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TodoListComponent } from './todo-list.component';
import { TodoAddComponent } from './todo-add.component';
@NgModule({
imports: [
RouterModule.forChild([
{ path: 'todo', component: TodoListComponent },
{ path: 'todo/add', component: TodoAddComponent }
// tested these routes and not working too
//{ path: 'add', component: TodoAddComponent }
//{ path: 'todo/:id', component: TodoAddComponent }
])
],
declarations: [
TodoAddComponent,
TodoListComponent
],
providers: [
]
})
export class TodoModule { }
ため
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from "./home/home.component";
import { AppComponent } from "./app.component";
import { PageNotFoundComponent } from "./not-found.component";
import { TodoListComponent } from "./todo/todo-list.component";
import { TodoModule } from "./todo/todo.module";
@NgModule({
imports: [
BrowserModule,
HttpModule,
RouterModule.forRoot([
{ path: 'home', component: HomeComponent },
{ path: 'todo', component: TodoListComponent },
{ path: '**', component: PageNotFoundComponent }
],
TodoModule)
],
declarations: [
AppComponent,
HomeComponent,
TodoListComponent,
PageNotFoundComponent
],
bootstrap: [AppComponent],
})
export class AppModule { }
そしてtodo.module.ts内の子ルートを設定私がインターネット上で見つけた3つの可能な方法は、すべて404エラー(PageNotFoundComponentにリダイレクト)
<h1>Todo List</h1>
<a [routerLink]="['/todo/add']">Add New Item with /</a><br />
<a [routerLink]="['/todo', 'add']">Add New Item</a><br />
<a [routerLink]="['add']">Add New Item</a>
これらは/ todo/add、/ todo/add、/ addとしてレンダリングされますが、すべて404エラーになります。
君たちは、この問題を整理するために私を助けていただけますか?
私は自分自身(あるいはおそらくAngular2)に非常に不満を持ち、なぜ簡単なことを学ぶことが難しいのか理解できませんでした。
あなたは私を救った。どうもありがとう。主な問題は私が誤ってForRootブラケットにTodoModuleを追加したことです。あなたの説明からAngular2のRoutingがどのように機能するのかが明確に分かりました。 – TTCG
その他の質問... 'localhost/todo'または 'localhost/home'をアドレスバーに直接入力すると動作しますが、 'localhost/todo/add'と入力するとすべてのライブラリを読み込めません.jsファイル(shin.min、zone、reflectなど)を取得し、これらのライブラリのすべてに対して404を与えます。 – TTCG
ライブラリを読み込むためにどのようなコードを使用していますか? SystemJSまたはWebpackを使用していますか? – AngularChef