Angular 2 route resolver not working, browser blank and no errors in console

Swifty

I implemented a route resolver but the entire target component (events-list.component.ts) is not shown in the browser. I only see the navbar. As shown below, the resolver gets the list of events from the events service. And no errors are shown in the Chrome developer tools console. I also tried loading the app in the Firefox browser, but the problem still persists. What could be wrong with my code? Thanks.

routes.ts file

The 'events' route is the default route which I am having the problem with.

import {Routes} from '@angular/router';
import { EventDetailsComponent } from './events/event-details/event-details.component';
import { EventsListComponent } from './events/events-list.component';
import { CreateEventComponent } from './events/create-event.component';
import { Error404Component } from './errors/404.guard';
import { EventRouteActivator } from './events/event-details/event-route-activator.service';
import { EventListResolver } from './events/event-list-resolver.service';

export const appRoutes: Routes = [

    {path: 'events/new', component: CreateEventComponent, canDeactivate: ['canDeactivateCreateEvent']},
    {path: 'events', component: EventsListComponent, resolve: {events: EventListResolver}},
    {path: 'events/:id', component: EventDetailsComponent, canActivate: [EventRouteActivator]},
    {path: '404', component: Error404Component},
    {path: '', redirectTo: 'events', pathMatch: 'full'}
]

event.service.ts file

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class EventService {

  constructor() { }

  events = [
    {
      id: 1,
      name: 'Angular Connect',
      date: '9/26/2036',
      time: '10:00 am',
      price: 599.99,
      imageUrl: '/assets/images/angularconnect-shield.png',
      onlineUrl: 'http://ng-nl.org/'
     },

    {
      id: 2,
      name: 'ng-nl',
      date: '4/15/2037',
      time: '9:00 am',
      price: 950.00,
      imageUrl: '/assets/images/ng-nl.png',
      location: {
        address: 'The NG-NL Convention Center & Scuba Shop',
        city: 'Amsterdam',
        country: 'Netherlands'
      }
}
  ];

  getEvents(){
    let subject = new Subject();
    setTimeout(() => {subject.next(this.events); subject.complete;}, 2000)
    return subject;
  }

  getEvent(id: number){
  return this.events.find(event => event.id === id);
  }
}

resolver.service.ts file

import { Injectable } from "@angular/core";
import { EventService } from '../shared/event.service';
import { Resolve } from '@angular/router';
import { map } from 'rxjs/operators'

@Injectable({
    providedIn: 'root'
})

export class EventListResolver implements Resolve<any>{

    constructor(private eventService: EventService){

    }

    resolve() { 
        return this.eventService.getEvents().pipe(map(events => events));
    }

}

event-list.component.ts file

import { Component, OnInit } from '@angular/core';
import { EventService } from '../shared/event.service';
import { ToastrService } from '../shared/toastr.service';
import { ActivatedRoute } from '@angular/router';

@Component({
  templateUrl: './events-list.component.html',
  styleUrls: ['./events-list.component.css']
})
export class EventsListComponent implements OnInit {

  events: any[];

  constructor(private eventService: EventService, private toastrService: ToastrService, private route: ActivatedRoute) { }

  ngOnInit() {
    this.events = this.route.snapshot.data['events'];
  }

  handleThumbnailClick(eventName){
  this.toastrService.success(eventName)
  }
}

events-list.component.html

<div>
    <h1>Upcoming angular events</h1>
    <hr>
    <div class="row">
      <div class="col-md-5" *ngFor="let event of events" >
        <event-thumbnail [event]="event" (click)="handleThumbnailClick(event.name)"></event-thumbnail>
      </div>
    </div>
  </div>

I don't even see the h1 tag's text "Upcoming angular events". I only see the navbar and then the rest of the page is blank.

events-app.component.ts file (main bootstrapped component)

import { Component } from '@angular/core';

@Component({
  selector: 'events-app',
  template: `<nav-bar></nav-bar>
  <router-outlet></router-outlet>`,
  //styleUrls: ['./app.component.css']
})
export class EventsAppComponent {
  title = 'ng-fundamentals';
}
Uday Vunnam

Since you dont even see the static <h1> tag, event-list.component itself is not instantiated(since not routed to that component). The route resolver probably is not returning proper observable/promise

can you try with below code -

event.service.ts

getEvents(){
  return of(this.events).pipe(delay(2000)); //if you need delay
}

resolver.service.ts

resolve(){
  return this.eventService.getEvents();
}

and debug in event-list.component.ts ngOnInit, whether the events data is resolved

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Handle errors using route resolver

分類Dev

Prevent writing errors in browser console after logout in Angular Firebase

分類Dev

Console.log javascript not working in web browser

分類Dev

Route Parameters in Angular 2

分類Dev

Angular ng build --prod causes blank screen in browser

分類Dev

Symfony2 - Blank pages on php errors and 404's

分類Dev

Common route resolver in angularjs?

分類Dev

*ngFor is not working in angular 2

分類Dev

Angular 2 get current route in guard

分類Dev

Angular 2 get current route in guard

分類Dev

Angular 2 get current route in guard

分類Dev

Angular2 this.route.params.map

分類Dev

Angular2 this.route.params.map

分類Dev

Angular 2+ - change css based on route

分類Dev

Angular 2 ngSwitchCase, OR operator not working

分類Dev

DefaultExtension not working in Angular 2 app

分類Dev

Angular 2 relative templateUrl not working

分類Dev

Angular 2 incremental counter not working

分類Dev

Render JavaScript console output from r2d3 into browser console instead of the visualization?

分類Dev

Pandas - Working with blank spaces

分類Dev

Issue with angular-route.min.js | Error Chrome Console [$injector:modulerr]

分類Dev

How can client browser console log be forwarded to backend through REST api in angular 4 application?

分類Dev

How to mock an activatedRoute parent Route in angular2 for testing purposes?

分類Dev

How to mock an activatedRoute parent Route in angular2 for testing purposes?

分類Dev

Angular 2 passing object via route params possible?

分類Dev

Angular2: Configuration 'name' conflicts with existing route 'name'

分類Dev

Angular2 - changing location without triggering a Route

分類Dev

Angular2 set param of current route in routerLink

分類Dev

How to get an absolute Url by a route name in Angular 2?

Related 関連記事

  1. 1

    Handle errors using route resolver

  2. 2

    Prevent writing errors in browser console after logout in Angular Firebase

  3. 3

    Console.log javascript not working in web browser

  4. 4

    Route Parameters in Angular 2

  5. 5

    Angular ng build --prod causes blank screen in browser

  6. 6

    Symfony2 - Blank pages on php errors and 404's

  7. 7

    Common route resolver in angularjs?

  8. 8

    *ngFor is not working in angular 2

  9. 9

    Angular 2 get current route in guard

  10. 10

    Angular 2 get current route in guard

  11. 11

    Angular 2 get current route in guard

  12. 12

    Angular2 this.route.params.map

  13. 13

    Angular2 this.route.params.map

  14. 14

    Angular 2+ - change css based on route

  15. 15

    Angular 2 ngSwitchCase, OR operator not working

  16. 16

    DefaultExtension not working in Angular 2 app

  17. 17

    Angular 2 relative templateUrl not working

  18. 18

    Angular 2 incremental counter not working

  19. 19

    Render JavaScript console output from r2d3 into browser console instead of the visualization?

  20. 20

    Pandas - Working with blank spaces

  21. 21

    Issue with angular-route.min.js | Error Chrome Console [$injector:modulerr]

  22. 22

    How can client browser console log be forwarded to backend through REST api in angular 4 application?

  23. 23

    How to mock an activatedRoute parent Route in angular2 for testing purposes?

  24. 24

    How to mock an activatedRoute parent Route in angular2 for testing purposes?

  25. 25

    Angular 2 passing object via route params possible?

  26. 26

    Angular2: Configuration 'name' conflicts with existing route 'name'

  27. 27

    Angular2 - changing location without triggering a Route

  28. 28

    Angular2 set param of current route in routerLink

  29. 29

    How to get an absolute Url by a route name in Angular 2?

ホットタグ

アーカイブ