2016-11-03 6 views
0

PollDetailResolveクラスを使用して、PollDetailResolveクラスを作成してから、poll-detailページにナビゲートします。しかし、PollServiceも利用する別のデータ(canVoteと呼ぶブール値)を解決する必要があります。角度2でResolve Guardを使用して複数のデータを解決する

2つ以上のデータを解決する最良の方法は何ですか?

@Injectable() 
export class PollDetailResolve implements Resolve<Poll> { 
    constructor(private pollService: PollService, private router: Router) { } 

    resolve(route: ActivatedRouteSnapshot): Observable<Poll> | boolean { 
    let id = route.params['id']; 

    return this.pollService.getById(id) 
     .map(poll => { 
     if (poll) { 
      return poll; 
     } else { 
      console.log("NOT FOUND!"); // TODO reroute 
     } 
     }, 
     err => { 
     console.error(err); 
     }); 
    } 
} 

マイポール・ディテールngOnInit()関数:

ngOnInit(): void { 
    this.route.data.forEach((data: { poll: Poll }) => { 
     this.poll = data.poll; 
     this.sharePoll(this.poll); 
    }); 
    } 
+0

あなたが投稿したコードでは、「canVote」の役割は何であるのか分かりません。これらが2つの観察可能なものであれば、それらはちょうど結合されるべきです。 – estus

+0

これは 'merge()'関数を使って行うことができますか? –

+0

またはおそらくforkJoin。それは場合によって異なります。 – estus

答えて

関連する問題