Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro: [ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[PhotoListResolver]: ]

Estou com erro no momento de realizar a injeção no PhotoListResolver. Tentei de várias maneiras e não consigo resolver o problema.

Link do projeto no github: https://github.com/andrelsa/alurapic

core.js:1449 ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[PhotoListResolver]: 
  StaticInjectorError(Platform: core)[PhotoListResolver]: 
    NullInjectorError: No provider for PhotoListResolver!
Error: StaticInjectorError(AppModule)[PhotoListResolver]: 
  StaticInjectorError(Platform: core)[PhotoListResolver]: 
    NullInjectorError: No provider for PhotoListResolver!
    at _NullInjector.get (core.js:1003)
    at resolveToken (core.js:1301)
    at tryResolveToken (core.js:1243)
    at StaticInjector.get (core.js:1111)
    at resolveToken (core.js:1301)
    at tryResolveToken (core.js:1243)
    at StaticInjector.get (core.js:1111)
    at resolveNgModuleDep (core.js:10896)
    at NgModuleRef_.get (core.js:12129)
    at PreActivation.getToken (router.js:4026)
    at resolvePromise (zone.js:831)
    at resolvePromise (zone.js:788)
    at eval (zone.js:892)
    at ZoneDelegate.invokeTask (zone.js:423)
    at Object.onInvokeTask (core.js:4751)
    at ZoneDelegate.invokeTask (zone.js:422)
    at Zone.runTask (zone.js:195)
    at drainMicroTaskQueue (zone.js:601)

AppRoutingModule:

import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';

import {PhotoListComponent} from './photos/photo-list/photo-list.component';
import {PhotoFormComponent} from './photos/photo-form/photo-form.component';
import {NotFoundComponent} from './errors/not-found/not-found.component';
import {PhotoListResolver} from './photos/photo-list/photo-list.resolver';

const routes: Routes = [
  {
    path: 'user/:userName',
    component: PhotoListComponent,
    resolve: {
      photos: PhotoListResolver
    }
  },
  {
    path: 'p/add', component: PhotoFormComponent
  },
  {
    path: '**', component: NotFoundComponent
  },
];

@NgModule({
  imports: [
    RouterModule.forRoot(routes)
  ],
  exports: [
    RouterModule
  ]
})
export class AppRoutingModule {
}

PhotoListComponent:

import {Component, OnInit} from '@angular/core';
import { ActivatedRoute } from '@angular/router';

import {Photo} from '../photo/photo';

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

  photos: Photo[] = [];
  filter: string = '';

  constructor(private activatedRoute: ActivatedRoute) {
  }

  ngOnInit(): void {
    this.photos = this.activatedRoute.snapshot.data['photos'];
  }
}

PhotoListResolver:

import {Injectable} from '@angular/core';
import {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';
import {Observable} from 'rxjs/Observable';

import {PhotoService} from '../photo/photo.service';
import {Photo} from '../photo/photo';

@Injectable()
export class PhotoListResolver implements Resolve<Observable<Photo[]>>{

  constructor(private service: PhotoService) {}

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Photo[]> {
    const userName = route.params.userName;
    return this.service.listFromUser(userName);
  }

}
3 respostas

Fala ai Al, tudo bem? Acho que o repositório não está atualizado, eu baixei aqui e está bem simples a aplicação, consegue dar uma olhada?

Fico no aguardo.

solução!

Matheus o repositório esta atualizado, não entendi o que vc quis dizer bem simples a aplicação. Esta atualizado conforme as aulas.

Mas consegui resolver o problema, não adicionei o PhotoListResolver nos providers do AppModule, havia me esquecido dessa parte. Não foi citado na aula, mas lembrei posteriormente.

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    PhotosModule,
    AppRoutingModule,
    ErrorsModule
  ],
  providers: [
    PhotoService,
    PhotoListResolver
  ],
  bootstrap: [AppComponent]
})
export class AppModule {

Boa Al, fico feliz que tenha resolvido o problema.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.