각도 자습서의 "Tour of heroes"을 참조하십시오.http : // 요청에서 Observable로 Angular2에있는 두 개체의 N 또는 N : 1 관계
기존의 모든 영웅에게 특별한 스위트를 착용 할 수 있다고 가정했지만 다른 영웅도 같은 스위트를 착용 할 수 있다고 가정합니다. 우리는 정말로 그들이 벗은 채로 있기를 원하지 않습니다. 이 경우 사용 가능한 슈트에 대한 모든 정보를 보유하고있는 관련 데이터 객체를 갖게됩니다. 영웅 그 자체는 그가 입고있는 스위트와 그가 선택한 것을 찾을 수있는 곳을 알아야합니다. 이 경우 우리는 자신이 선택한 복장의 ID를 보유하는 속성을 만들 것입니다.
http 요청에서 관찰 할 때 영웅과 그의 스위트 룸의 관계를 각도로 해결하는 올바른 방법은 무엇입니까?
는 예컨대 :
app/hero.ts
export class Hero {
id: number;
name: string;
suiteId: number;
}
app/suit.ts
export class Suite {
id: number;
name: string;
material: string;
color: string;
}
는 app/in-memory-data.service.ts
import { InMemoryDbService } from 'angular-in-memory-web-api';
export class InMemoryDataService implements InMemoryDbService {
createDb() {
let heroes = [
{id: 11, name: 'Mr. Nice', suitId: 11},
{id: 12, name: 'Narco', suitId: 12}
];
let suits= [
{id: 11, name: 'Nice and blue', material: 'Cotton', color: 'blue'},
{id: 12, name: 'Sexy and red', material: 'Silk', color: 'red'}
];
return {heroes, suits};
}
}
나는 일을 알고 다음 코드 블록과 같은 무언가에서 작동하지만, 이것을 "관찰 가능한"방법으로 해결하는 방법을 알고 싶습니다.
// ...
getHeroesWithSuit(): Observable<Hero[]> {
return this.http.get(this.heroesUrl)
.map(response => response.json().data as Hero[])
.do(response => response.forEach((data) => data.suite = this.suiteService
.getSuit(data.suiteId)
.subscribe(suite => data.suite = suite as Suite)
))
.catch(this.handleError);
}
// ...
어디에서 'getHeroesWithSuit'가 필요합니까? 여기에 논리가 뭐니? 실례지만 뭔가 명확하지는 않지만 질문이 조금 애매한 것 같습니다. 내가 이해 한 것은 '영웅'과 '복장'이 있다는 것입니다. '정장 '에는'id'가 있고'id'를'영웅들'에게 할당합니다. 그리고 뭐? – echonax
기술적으로, 어디서 getHeroesWithSuit 메소드를 호출 할 것인가는 문제가되지 않는다. 아마도 컴포넌트로부터의 요청에 대한 데이터를 제공하는 서비스 일 것이다. 일부 영웅이 세부 및 목록 구성 요소에 입고있는 소송을 표시하려고한다고 가정합니다. 이 주제가 일반적이기 때문에이 질문은 모호합니다. – Daniel