Я работал над созданием решателя, работающего для активированного маршрута. Проблема, с которой я сталкиваюсь, состоит в том, что в компоненте моего маршрута данные, которые я пытаюсь получить от преобразователя, всегда неопределенны. Я знаю, что мой сервис работает (я возвращал значения в консоль), только когда я пытаюсь подписаться на мои данные маршрутов в компоненте, ничего не возвращается
Вот мой компонент
@Component({
selector: 'app-value',
templateUrl: './value.component.html',
styleUrls: ['./value.component.css']
})
export class ValueComponent implements OnInit , OnDestroy {
values: any = {};
newBin: any = [];
navigationSubscription;
bins: Bins;
constructor(private http: Http, private dbService: DbService, private toastr: ToastrService, private router: Router,
private route: ActivatedRoute) {
this.navigationSubscription = this.router.events.subscribe((e: any) => {
if (e instanceof NavigationEnd) {
this.loadLinks();
}
});
}
ngOnInit() {
this.dbService.getBins().subscribe( response => {
this.values = response;
}
);
this.loadLinks();
}
loadLinks() {
this.route.data.subscribe(data => {
this.bins = data['bins'];
console.log(this.bins);
});
}
вот мой app.module
с маршрутом
@NgModule({
declarations: [
AppComponent,
ValueComponent,
],
imports: [
BrowserModule,
HttpModule,
RouterModule.forRoot(
[{path: 'bins', component: ValueComponent, resolve: {bins: LinkResolver}, runGuardsAndResolvers: 'always'},
{path: '', redirectTo: 'bins', pathMatch: 'full' }],
{onSameUrlNavigation: 'reload'}),
вот резольвер
@Injectable({
providedIn: 'root'
})
export class LinkResolver implements Resolve<any> {
constructor(private router: Router, private dbservice: DbService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
console.log('in the router');
return this.dbservice.getBins();
}
и, наконец, услуга
getBins(): Observable<Bins[]> {
return this.http.get<Bins[]>('http://localhost:5000/api/values');
}