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