Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度路由器链路“;停止“;工作_Javascript_Angular - Fatal编程技术网

Javascript 角度路由器链路“;停止“;工作

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

app.routes.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> 
})
产品.路线.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参数什么时候改变了,我在上面停留了这么长时间。非常感谢。我已经在这上面呆了很久了。非常感谢。