2017-05-24 3 views
0

Ich bin neu bei eckigen 2 und ich versuche, eine Nachrichtenwebsite zu erstellen, die bedeutet, dass die Homepage zum Beispiel verschiedene Artikel aus verschiedenen Kategorien enthält.Wie erstellt man dynamische Routerlinks in Winkel 2?

So bekomme ich die Artikel zum Beispiel im Schieberabschnitt von api das json Ergebnis des Link ex enthält: '/ Schieber/article1', '/ Sport/article3' etc ..

wenn ich Schleife versuchen die ergebnisse im html der routerlink funktioniert nicht!

Hier ist ein Beispielcode

Home.component.html // können sagen, dass Link enthält '/ Sport'

<a [routerLink]="[item.link]">{{item.title}}</a> 

Route.config.ts

export const rootRouterConfig: Routes = [ 
    { path: '', redirectTo: 'home', pathMatch: 'full' }, 
    { path: 'home', component: HomeComponent }, 
    { path: 'sport', component: SportComponent } 
]; 

** Ich vergesse den Fehler zu erwähnen

Uncaught (in promise): TypeError: Cannot read property 'outlets' of null

Home.component.ts

import { Component, OnInit } from '@angular/core'; 
import { HomeService } from '../../_services/home.service'; 
import { ContentInfo } from '../../_models/content'; 
@Component({ 
    selector: 'app-home', 
    templateUrl: './home.component.html', 
    styleUrls: ['./home.component.css'], 
    providers: [HomeService] 
}) 
export class HomeComponent implements OnInit { 
    mainNewsItem: ContentInfo[]; 
    constructor(private _homeService: HomeService) { 
    this.mainNewsItem = []; 
    } 
    ngOnInit() { 
     // Get Main News Item 
     this._homeService.getMainNewsItem() 
      .subscribe(content => this.mainNewsItem = content, 
      error => this._homeService = <any>error) 
      ; 
    } 
} 

ich gebraucht * ngif

*ngIf="mainNewsItem?.length > 0" 

die div gegangen ist, aber warum? Ich meine das MainNewsItem enthält Daten!

Thanks :)

+0

können reproduzieren Sie Ihr Problem auf Plunker? und was ist der Fehler in der Konsole –

+0

[Nach der Dokumentation] (https://angular.io/docs/ts/latest/guide/router.html#!#route-def-with-parameter), sollten Sie verwenden Routenparameter. Wenn Sie nicht verstehen, zögern Sie nicht zu fragen! – trichetriche

+0

Fehler - Uncaught (im Versprechen): TypeError: Kann 'Eigenschaft' von Null nicht lesen, –

Antwort

1

können Sie Route Parameter verwenden:

{ path: 'sport/:articleTitle', component: SportComponent },

Source: Angular doc's: route with parameter

In Ihrem SportComponent Sie die ActivatedRoute in Ihrem Konstruktor injizieren können die Parameter zu erhalten: constructor(private route: ActivatedRoute)

+0

das Problem beginnt auch dort ist kein Artikel Titel ich meine, auch wenn der Link ist '/ Sport' nur, jemand sagte mir, dass die Routen vor dem html dom beendet so der Fehler "Uncaught (in Versprechung): TypeError: Kann Eigenschaft nicht lesen "outlets" von null bedeutet, dass. !! –

+0

aber danke das wird für den nächsten Schritt helfen. –

+0

Ich denke, Ihre 'Artikel' sind noch nicht beim Laden eingestellt. Sie können dies angehen, indem Sie Ihrem übergeordneten HTML-Element eine Anweisung ['* ngIf =" "' hinzufügen.] (Https://angular.io/docs/ts/latest/api/common/index/NgIf-directive.html) –

Verwandte Themen