gpt4 book ai didi

javascript - 创建了一个 Angular Provider,现在出现 StaticInjectorError

转载 作者:行者123 更新时间:2023-12-03 01:48:17 26 4
gpt4 key购买 nike

我正在构建一个新的 Angular (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/');
}
}

为了在我真正深入研究之前确保这个 stub 能够正常工作,我将其连接起来并将其添加到组件构造函数中:

应用程序模块:

@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 的问题,试图确定导致此错误的根本原因。有人熟悉该错误吗?我在设置服务时做错了什么吗?

最佳答案

Angular 版本 6 提供了一种新方法来注入(inject)您的服务以实现树摇动功能,因此您可以使用旧方法,将其添加到模块内的提供程序数组中,如下所示:

providers: [
NewsRepositoryProvider
]

或者在服务类中像这样:

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

所以你应该使用其中之一,我建议使用你的服务内部的方式。

关于javascript - 创建了一个 Angular Provider,现在出现 StaticInjectorError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50535836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com