【发布时间】:2020-05-21 01:17:31
【问题描述】:
我正在编写这个非常基本的 Angular 教程,并且我在教程的路由部分。单击产品名称时,应打开一个包含产品详细信息的页面。但是,它只显示文本“产品详细信息”。为什么它不起作用?
这就是我所看到的:
这是app-module.ts的内容
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { RouterModule } from "@angular/router";
import { ReactiveFormsModule } from "@angular/forms";
import { AppComponent } from "./app.component";
import { TopBarComponent } from "./top-bar/top-bar.component";
import { ProductListComponent } from "./product-list/product-list.component";
import { ProductAlertsComponent } from "./product-alerts/product-alerts.component";
import { ProductDetailsComponent } from "./product-details/product-details.component";
@NgModule({
imports: [
BrowserModule,
ReactiveFormsModule,
RouterModule.forRoot([
{ path: "", component: ProductListComponent },
{ path: "products/:productId", component: ProductDetailsComponent }
])
],
declarations: [
AppComponent,
TopBarComponent,
ProductListComponent,
ProductAlertsComponent,
ProductDetailsComponent
],
bootstrap: [AppComponent]
})
export class AppModule {}
这是 Product-list.component.html
<h2>Products</h2>
<div *ngFor="let product of products">
<h3>
<a
[title]="product.name + ' details'"
[routerLink]="['/products', productId]"
>
{{ product.name }}
</a>
</h3>
<p *ngIf="product.description">Description: {{ product.description }}</p>
<button (click)="share()">
Share
</button>
<app-product-alerts [product]="product" (notify)="onNotify()">
</app-product-alerts>
<app-product-alerts [product]="product"> </app-product-alerts>
</div>
这是 product-list.component.ts
import { Component } from "@angular/core";
import { products } from "../products";
@Component({
selector: "app-product-list",
templateUrl: "./product-list.component.html",
styleUrls: ["./product-list.component.css"]
})
export class ProductListComponent {
products = products;
share() {
window.alert("The product has been shared!");
}
onNotify() {
window.alert("You will be notified when the product goes on sale");
}
}
我错过了什么? https://angular.io/start/routing
上的说明非常简单Product-details.component.ts
import { Component, OnInit } from "@angular/core";
import { ActivatedRoute } from "@angular/router";
import { products } from "../products";
@Component
({ selector: "app-product-details",
templateUrl: "./product-details.component.html",
styleUrls: ["./product-details.component.css"] })
export class ProductDetailsComponent implements OnInit {
product;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.paramMap.subscribe(
params => { this.product =
products[+params.get("productId")]; });
} }
产品详细信息.component.html:
<h2>Product Details</h2>
<div *ngIf="product">
<h3>{{ product.name }}</h3>
<h4>{{ product.price | currency }}</h4>
<p>{{ product.description }}</p>
</div>
应用模块.ts:
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { RouterModule } from "@angular/router";
import { ReactiveFormsModule } from "@angular/forms";
import { AppComponent } from "./app.component";
import { TopBarComponent } from "./top-bar/top-bar.component";
import { ProductListComponent } from "./product-list/product-list.component";
import { ProductAlertsComponent } from "./product-alerts/product-alerts.component";
import { ProductDetailsComponent } from "./product-details/product-details.component";
@NgModule({
imports: [
BrowserModule,
ReactiveFormsModule,
RouterModule.forRoot([
{ path: "", component: ProductListComponent },
{ path: "products/:productId", component: ProductDetailsComponent }
])
],
declarations: [
AppComponent,
TopBarComponent,
ProductListComponent,
ProductAlertsComponent,
ProductDetailsComponent
],
bootstrap: [AppComponent]
})
export class AppModule {}
【问题讨论】:
-
是不是在折返回家路线?
-
您是否在模板中使用了
<router-outlet></router-outlet>(即您要显示此组件的app.component.html?另外,您是否在控制台中看到任何错误? -
点击产品时根据路径打开产品详情组件。那么该组件中有什么?
-
@Ramesh:看起来这是模板
Product-list.component.html -
@mntblnk 在产品详细信息组件中添加
console.log(this.product)在this.product = products[+params.get("productId")];之后,看看您是否在控制台中获得了点击的产品。如果不是,那么我们可以帮助您的唯一方法就是您创建应用程序的堆栈闪电战。另外,你能告诉我们产品数组吗?
标签: angular