Angular 9: класс не может быть создан с помощью внедрения зависимостей, так как у него нет декоратора Angular - PullRequest
0 голосов
/ 20 апреля 2020

Эта ошибка приводит меня к стене. У меня есть служба authguard, как видно здесь. Независимо от того, что я делаю, компилятор продолжает выдавать мне эту ошибку

'
Either add the @Injectable() decorator to 'AuthGuard', or configure a different provider (such as a provider with 'useFactory').

'

   @Injectable({ providedIn: 'root' })
    export class AuthGuard implements CanActivate {
constructor(private myService: MyService,
        private router: Router)}

, и я реализую ее здесь в моем app.module

providers: [  
    AuthGuard
]
bootstrap: [AppComponent]
})
export class AppModule { }
* 1009 У меня явно есть инъекционный декоратор над классом Authguard, но я все еще получаю эту ошибку. Это произошло только при обновлении с Angular 8 до 9.1. Это какая-то ошибка с VS Code или компилятором или что-то в этом роде?

1 Ответ

2 голосов
/ 20 апреля 2020

Вы регистрируете такую ​​же зависимость из 2 мест

Сначала @Injectable({ providedIn: 'root' }). Вы регистрируетесь в root инжектор с этим синтаксисом { providedIn: 'root' }.

Секунда находится ниже, вы регистрируетесь снова, что является причиной вашей ошибки.

providers: [  
    AuthGuard
]

Просто удалите ее из массив провайдеров, и он решит вашу проблему.

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