2017-02-02 23 views
1

Я создаю демонстрационное приложение в Angular 2 и хочу, чтобы консоль params['id'] в моем компоненте, id исходит из параметров запроса.подписаться не указывается в угловом формате 2?

Для достижения этой цели я делаю это в моем компоненте:

ngOnInit(): void { 
    this.route.params 
      .switchMap(
      (params: Params) => 
       this.heroService.getHero(+params['id']); 
       console.log("ID :",params['id']) 
      ).subscribe(hero => this.hero = hero); 
    }; 

Но я получил эту ошибку:

core.umd.js:3491 EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: params is not defined 
ReferenceError: params is not defined 

Пожалуйста, предложить то, что я должен сделать, чтобы утешать идентификатор Парам в?

ответ

3

Вы должны иметь {} добавить несколько операторов в функцию стрелки. Я думаю, что вы можете сделать:

ngOnInit(): void { 
     this.route.params 
       .switchMap((params: Params) => { 
    console.log("ID :",params['id'])); 
    return this.heroService.getHero(+params['id']); 
    }) .subscribe(hero => this.hero = hero); 
}; 

Why return?

Наблюдаемая, который возвращается switchmap подписан в subscribe функции. В случае функций стрелок ()=>statment эквивалентен ()=>{return statement;}

При добавлении дополнительной инструкции и использовании скобки вам необходимо добавить недостающий доход.

+0

Спасибо, Позвольте мне попробовать. –

+0

Вы правы. Работал. Большое спасибо :) –

+0

Правильно .. спасибо .. обновлено –

1

Если вы хотите несколько операторов, вам нужен блок {}:

ngOnInit(): void { 
    this.route.params 
    .switchMap((params: Params) => { 
    var hero = this.heroService.getHero(+params['id']); 
    console.log("ID :",params['id']); 
    return hero; 
    }) 
    .subscribe(hero => this.hero = hero); 
} 

или

ngOnInit(): void { 
    this.route.params 
    .switchMap((params: Params) => { 
    console.log("ID :",params['id']); 
    return this.heroService.getHero(+params['id']); 
    }) 
    .subscribe(hero => this.hero = hero); 
} 
+0

Спасибо @ Günter Zöchbauer, позвольте мне проверить. –

+0

Я думаю, что вы пропустили возврат в коммутатор callback –

+0

У меня была закрывающая скобка для многих. Обновлен мой ответ. –

Смежные вопросы