Active Route Resolver возвращает неопределенное значение при каждом вызове - PullRequest
0 голосов
/ 07 сентября 2018

Я работал над созданием решателя, работающего для активированного маршрута. Проблема, с которой я сталкиваюсь, состоит в том, что в компоненте моего маршрута данные, которые я пытаюсь получить от преобразователя, всегда неопределенны. Я знаю, что мой сервис работает (я возвращал значения в консоль), только когда я пытаюсь подписаться на мои данные маршрутов в компоненте, ничего не возвращается

Вот мой компонент

 @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');
}

1 Ответ

0 голосов
/ 12 сентября 2018

Проблема была в HTML-шаблоне app.component. Видимо, вам нужно добавить html-тег <router-outlet></router-outlet>, чтобы данные могли быть перенаправлены на ваш сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...