2016-07-30 7 views
0

ActivatedRouteを使ってニュースIDのスナップショットを取得しようとしていますので、後でそのIDをAPIのルートを通じてその特定のニュースIDを要求するサービスのメソッドに渡すことができます。getメソッドにIDを送る方法

これは私のコンポーネントである:

import { Component, OnInit } from '@angular/core'; 
import { ApiNoticiasService } from './api-noticias.service'; 
import { ActivatedRoute } from '@angular/router'; 

@Component({ 
    moduleId: module.id, 
    selector: 'app-editar-noticias', 
    templateUrl: 'editar-noticias.component.html', 
    styleUrls: ['editar-noticias.component.css'], 
    providers: [ApiNoticiasService] 
}) 
export class EditarNoticiasComponent implements OnInit { 
    noticia: any; 

    constructor(
    private route: ActivatedRoute, 
    private _apiNoticias: ApiNoticiasService) { } 

    ngOnInit() { 
    this._apiNoticias.getNoticia(this.route.snapshot.params.id) 
     .then((noticia) => this.noticia = noticia) 
     .catch((err) => { 
     console.log(err); 
     }); 
    } 

} 

そして、これは私のサービスです。悲しいことに

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 

import { Observable } from 'rxjs/Rx'; 

@Injectable() 
export class ApiNoticiasService { 
    constructor(private _http: Http) { } 

    getNoticia(id) { 
    return this._http.get('http://localhost:3000/noticia/:id') 
     .map((response: Response) => response.json()) 
     .toPromise() 
     .catch((err: any) => { 
     console.log(err); 
     return Promise.reject(err); 
     }); 
    } 

} 

、私は、TSからの私のコンポーネントでこのエラーを取得します。プロパティ「ID」は、種類には存在しません。 '{[key:string]:any; } '。

ありがとうございます!

答えて

0

this.route.snapshot.params['id']この方法では、snapshotからIDを取得します。

ngOnInit() { 
    this._apiNoticias.getNoticia(+this.route.snapshot.params['id']) //<---this way you get id. + sign will convert it to number. 
     .then((noticia) => this.noticia = noticia) 
     .catch((err) => { 
     console.log(err); 
     }); 
} 
getNoticia(id:number) { 
    return this._http.get('http://localhost:3000/noticia/:'+ id) //<----changed it. 
     .map((response: Response) => response.json()) 
     .toPromise() 
     .catch((err: any) => { 
     console.log(err); 
     return Promise.reject(err); 
     }); 
} 
+1


は素晴らしい仕事、ありがとう! – cerealex

関連する問題