Создал угловой поставщик и теперь получает StaticInjectorError - PullRequest
0 голосов
/ 25 мая 2018

Я создавал новое угловое (v6.0.1) приложение и хотел начать его связывать для обработки данных через сервис.Я создал нового провайдера, как показано ниже:

@Injectable({
    providedIn: 'root',
})
export class NewsRepositoryProvider {
    constructor(private firebase: AngularFireDatabase) {

    }

    ///Gets a news article starting at a certain index and then so many forward
    public getPagedNews(start: number, count: number): AngularFireList<any> {
        return this.firebase.list('/News/');
    }
}

Желая убедиться, что эта заглушка сработала до того, как я в нее углубился, я подключил ее и добавил в конструктор компонента:

AppModule:

@NgModule({
    declarations: [
        AppComponent,
        NavMenuComponent,
        NewsComponent,
        HomeComponent,
        ContactComponent,
        ProductsComponent,
        ApplicationsComponent,
        NewsRepositoryProvider,
    ],
    imports: [
        CommonModule,
        HttpModule,
        FormsModule,
        RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: 'applications', component: ApplicationsComponent },
            { path: 'contact', component: ContactComponent },
            { path: 'news', component: NewsComponent },
            { path: 'products', component: ProductsComponent },
            { path: '**', redirectTo: 'home' }
        ]),
        AngularFireModule.initializeApp(FIREBASE_CONFIG),
        AngularFireAuthModule,
        AngularFireDatabaseModule,
    ],
})
export class AppModuleShared {
}

Компонент:

constructor(private newsRepo: NewsRepositoryProvider) {    
        console.log(newsRepo.getPagedNews(0, 10));    
    }

Я запускаю webpack и затем запускаю страницу.К моему удивлению, я получаю следующую ошибку:

An unhandled exception occurred while processing the request.
NodeInvocationException: StaticInjectorError(e)[LocationStrategy -> PlatformLocation]: 
StaticInjectorError(Platform: core)[LocationStrategy -> PlatformLocation -> InjectionToken DocumentToken]: 
Right-hand side of 'instanceof' is not an object
TypeError: StaticInjectorError(e)[LocationStrategy -> PlatformLocation]: 
StaticInjectorError(Platform: core)[LocationStrategy -> PlatformLocation -> InjectionToken DocumentToken]: 
Right-hand side of 'instanceof' is not an object
at bt (\ClientApp\dist\main-server.js:109:67471)

Я перелистывал вопросы StackOverflow, пытаясь определить, что может быть основной причиной этой ошибки.Кто-нибудь знаком с ошибкой?Я что-то не так сделал при настройке сервиса?

1 Ответ

0 голосов
/ 25 мая 2018

Angular версии 6 поставляется с новым способом внедрения вашего сервиса для функции встряхивания дерева, так что вы можете использовать старый, добавив его в массив провайдера внутри вашего модуля следующим образом:

providers: [
   NewsRepositoryProvider
]

Иливнутри класса обслуживания вот так:

@Injectable({
    providedIn: 'root',
})

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

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