0
我正在使用angular rc2並且有一個關於route resolve guard的問題。angular2 route resolve gaurd - 如何將變量傳遞給服務
這是我的解決方案服務。它工作正常。
import { Injectable } from '@angular/core';
import { Router, Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { ApiService } from '../api_service/api.service';
import 'rxjs/add/operator/take';
import { BasicSetup } from './basic_setup'
@Injectable()
export class BasicSetupResolve implements Resolve<any> {
constructor(private _apiService: ApiService, private router: Router) {}
resolve(route: ActivatedRouteSnapshot): Observable<any> | Promise<any> | any {
let id = route.params['id'];
let model_id = id;
let endpoint='/test/model/basic';
return new Promise((resolve) => { this._apiService.getModel(endpoint,model_id,false).subscribe(api_object => {
if (api_object) {
return resolve(api_object);
} else { // id not found
this.router.navigateByUrl('/dashboard(content:models/basic/' + model_id +')');
return false;
}
});
});
}
}
這裏是我的app.route.ts
{ path: 'models/basic/:id', component: mesaBasicComponent,canActivate: [AuthGuard], resolve: {results: BasicSetupResolve},outlet:'content' },
我需要通過一個變量來讓更多的動態,因爲端點別人改變我將不得不作出一個單獨的服務爲每個端點:
let endpoint='/test/model/basic';
我會如何將它傳遞給服務?
如何傳遞數據對象,從解析服務獲取呢? – micronyks
但如何?似乎我必須從路由解析:{results:BasicSetupResolve}將看起來像什麼? – Tampa