Javascript 角度路由器链路“;停止“;工作
app.routes.ts:Javascript 角度路由器链路“;停止“;工作,javascript,angular,Javascript,Angular,app.routes.ts: import { environment } from './environment'; import { RouterModule } from "@angular/router"; import { ContactUsComponent } from './static/components/contact-us.component'; import { HomeComponent } from './st
import { environment } from './environment';
import { RouterModule } from "@angular/router";
import { ContactUsComponent } from './static/components/contact-us.component';
import { HomeComponent } from './static/components/home.component';
import { PrivacyComponent } from './static/components/privacy.component';
import { ProductDetailsComponent } from './products/components/product-details.component';
import { ProductListComponent } from './products/components/product-list.component';
import { TermsComponent } from './static/components/terms.component';
export const ApplicationRoutes = RouterModule.forRoot([
{
path: '',
component: HomeComponent
},
{
path: 'products',
loadChildren : 'app/products/products.module#ProductModule'
},
{
path: 'product/:id',
component: ProductDetailsComponent
}
]);
Welcome!
<br/>
<div>
<a routerLink="/">Home</a>
</div>
<div>
<product-list></product-list>
</div>
<div>
<router-outlet></router-outlet>
</div>
<br/>
<div>
<a routerLink="terms">Terms</a>
<a routerLink="contact-us">Contact Us</a>
<a routerLink="privacy">Privacy</a>
</div>
<product *ngFor="let p of products" [product]="p"></product>
import { Component, Input } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector : 'product',
template :
` <div>
<a [routerLink]="['product', product.id]">
{{product.name}}
</a>
</div>
})
产品.路线.ts:
import { RouterModule } from "@angular/router";
import { ProductListComponent } from '../components/product-list.component';
import { ProductDetailsComponent } from '../components/product-details.component';
export const ProductRoutes = RouterModule.forChild([
{
path: 'products',
component: ProductListComponent
}
,
{
path: 'product/:id',
component: ProductDetailsComponent
}
]);
app.component.html:
import { environment } from './environment';
import { RouterModule } from "@angular/router";
import { ContactUsComponent } from './static/components/contact-us.component';
import { HomeComponent } from './static/components/home.component';
import { PrivacyComponent } from './static/components/privacy.component';
import { ProductDetailsComponent } from './products/components/product-details.component';
import { ProductListComponent } from './products/components/product-list.component';
import { TermsComponent } from './static/components/terms.component';
export const ApplicationRoutes = RouterModule.forRoot([
{
path: '',
component: HomeComponent
},
{
path: 'products',
loadChildren : 'app/products/products.module#ProductModule'
},
{
path: 'product/:id',
component: ProductDetailsComponent
}
]);
Welcome!
<br/>
<div>
<a routerLink="/">Home</a>
</div>
<div>
<product-list></product-list>
</div>
<div>
<router-outlet></router-outlet>
</div>
<br/>
<div>
<a routerLink="terms">Terms</a>
<a routerLink="contact-us">Contact Us</a>
<a routerLink="privacy">Privacy</a>
</div>
<product *ngFor="let p of products" [product]="p"></product>
import { Component, Input } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector : 'product',
template :
` <div>
<a [routerLink]="['product', product.id]">
{{product.name}}
</a>
</div>
})
欢迎!
家
条款
联系我们
隐私
产品列表.component.html:
import { environment } from './environment';
import { RouterModule } from "@angular/router";
import { ContactUsComponent } from './static/components/contact-us.component';
import { HomeComponent } from './static/components/home.component';
import { PrivacyComponent } from './static/components/privacy.component';
import { ProductDetailsComponent } from './products/components/product-details.component';
import { ProductListComponent } from './products/components/product-list.component';
import { TermsComponent } from './static/components/terms.component';
export const ApplicationRoutes = RouterModule.forRoot([
{
path: '',
component: HomeComponent
},
{
path: 'products',
loadChildren : 'app/products/products.module#ProductModule'
},
{
path: 'product/:id',
component: ProductDetailsComponent
}
]);
Welcome!
<br/>
<div>
<a routerLink="/">Home</a>
</div>
<div>
<product-list></product-list>
</div>
<div>
<router-outlet></router-outlet>
</div>
<br/>
<div>
<a routerLink="terms">Terms</a>
<a routerLink="contact-us">Contact Us</a>
<a routerLink="privacy">Privacy</a>
</div>
<product *ngFor="let p of products" [product]="p"></product>
import { Component, Input } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector : 'product',
template :
` <div>
<a [routerLink]="['product', product.id]">
{{product.name}}
</a>
</div>
})
product.component.ts:
import { environment } from './environment';
import { RouterModule } from "@angular/router";
import { ContactUsComponent } from './static/components/contact-us.component';
import { HomeComponent } from './static/components/home.component';
import { PrivacyComponent } from './static/components/privacy.component';
import { ProductDetailsComponent } from './products/components/product-details.component';
import { ProductListComponent } from './products/components/product-list.component';
import { TermsComponent } from './static/components/terms.component';
export const ApplicationRoutes = RouterModule.forRoot([
{
path: '',
component: HomeComponent
},
{
path: 'products',
loadChildren : 'app/products/products.module#ProductModule'
},
{
path: 'product/:id',
component: ProductDetailsComponent
}
]);
Welcome!
<br/>
<div>
<a routerLink="/">Home</a>
</div>
<div>
<product-list></product-list>
</div>
<div>
<router-outlet></router-outlet>
</div>
<br/>
<div>
<a routerLink="terms">Terms</a>
<a routerLink="contact-us">Contact Us</a>
<a routerLink="privacy">Privacy</a>
</div>
<product *ngFor="let p of products" [product]="p"></product>
import { Component, Input } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector : 'product',
template :
` <div>
<a [routerLink]="['product', product.id]">
{{product.name}}
</a>
</div>
})
从'@angular/core'导入{Component,Input};
从'@angular/Router'导入{Router,ActivatedRoute};
@组成部分({
选择器:'产品',
模板:
`
{{product.name}
})
当我在app.component.html
页面中单击一个产品链接时,它会加载包含该产品信息的ProductDetailsComponent
,但当我再次尝试单击其他链接时,浏览器中的URL会改变,但什么也不会发生
我需要的是,在第一个页面加载时,比如“local.shop.com”,会在app.component.html
中显示一个包含产品链接的静态组件,当您单击每个链接时,它会显示有关该产品的信息。我尽量避免重新加载页面
我不确定还需要哪些代码片段来为这个问题提供足够的上下文,但请让我知道。这是因为角度组件重用功能改变了url,但没有改变视图。您需要订阅ProductDetailsComponent中接收到的参数,并对其执行一些操作 1) 在ProductDetails组件中,从@angular/route导入ActivatedRoute并从rxjs导入订阅
import { Subscription } from 'rxjs/Rx';
import { ActivatedRoute} from '@angular/router';
import { Component, OnInit, OnDestroy} from '@angular/router';
export class ProductDetailsComponent implements onInit, onDestroy {
private subscription: Subscription;
productId: string;
2) 在你的ngOnInit中,订阅并在其中做一些事情
ngOnInit() {
this.subscription = this.activatedRoute.params.subscribe((params) => {
this.productId = params['id'];
//do something here to trigger the changes
this.product = this.productService.getProduct(this.productId);
//example
console.log(this.product);
});
3) 最后但并非最不重要的一点,不要忘记取消订阅
ngOnDestroy() {
this.subscription.unsubscribe();
}
当然,不要忘记在构造函数中调用它
constructor(private activatedRoute: ActivatedRoute) {}
这是由于角度组件重用特性,即它更改url,但不更改视图。您需要订阅ProductDetailsComponent中接收到的参数,并对其执行一些操作 1) 在ProductDetails组件中,从@angular/route导入ActivatedRoute并从rxjs导入订阅
import { Subscription } from 'rxjs/Rx';
import { ActivatedRoute} from '@angular/router';
import { Component, OnInit, OnDestroy} from '@angular/router';
export class ProductDetailsComponent implements onInit, onDestroy {
private subscription: Subscription;
productId: string;
2) 在你的ngOnInit中,订阅并在其中做一些事情
ngOnInit() {
this.subscription = this.activatedRoute.params.subscribe((params) => {
this.productId = params['id'];
//do something here to trigger the changes
this.product = this.productService.getProduct(this.productId);
//example
console.log(this.product);
});
3) 最后但并非最不重要的一点,不要忘记取消订阅
ngOnDestroy() {
this.subscription.unsubscribe();
}
当然,不要忘记在构造函数中调用它
constructor(private activatedRoute: ActivatedRoute) {}
如何在ProductDetailsComponent中输入产品id。您应该订阅参数,以便您的组件可以检测url参数何时更改您如何在ProductDetailsComponent中提取产品id。你应该订阅这些参数,这样你的组件就可以检测url参数什么时候改变了,我在上面停留了这么长时间。非常感谢。我已经在这上面呆了很久了。非常感谢。