gpt4 book ai didi

angular - 如何将组件导入 Angular 中的服务类

转载 作者:搜寻专家 更新时间:2023-10-30 21:32:57 26 4
gpt4 key购买 nike

我正在尝试创建一个 Angular 对话框。为此,我将组件导入服务类,但出现以下错误。我正在使用不同的模块并在该模块上添加了一个入口组件

Error: No component factory found for NewPasswordComponent. Did you add it to @NgModule.entryComponents?

newpasword/newpassword.module.ts

   import { NewPasswordRoutingModule  } from './newpassword- 
routing.module';
import { NewPasswordComponent } from './newpassword.component';

export * from './newpassword.component';

@NgModule({
imports: [
CommonModule,
NewPasswordRoutingModule

FlexLayoutModule.withConfig({addFlexToParent: false})
],
exports: [
NewPasswordComponent
],
declarations: [NewPasswordComponent],
entryComponents: [NewPasswordComponent],

})
export class NewPasswordModule {}

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import {AppRoutingModule} from "./app-routing.module";
import { AppComponent } from './app.component';
import {SomeService} from "./shared/someservice.service";


@NgModule({
declarations: [
AppComponent,

],
imports: [
BrowserModule,
AppRoutingModule,

],

providers: [SomeService],
bootstrap: [AppComponent]
})
export class AppModule { }

共享/someservice.service.ts

   import {MatDialog, MatDialogRef, MAT_DIALOG_DATA,MatDialogConfig} from 
'@angular/material/dialog';
import { NewPasswordComponent } from
'../newPassword/newpassword.component';
@Injectable()
export class SomeService {

constructor(public dialog: MatDialog) {
}




LogIn(){


let dialogRef: MatDialogRef<NewPasswordComponent>;
const config = new MatDialogConfig();;
config.role = 'dialog';
config.width = '60%';
config.data = { newpassword: that.newpassword };
dialogRef = that.dialog.open(NewPasswordComponent, config);
console.log("Dialog Start"+email);

dialogRef.afterClosed().subscribe(result => {
that.newpassword = result;
console.log("Dialog closed"+result);
});

}


}

我收到以下错误。我在密码模块中添加了入口组件,但仍然出现此错误

Error: No component factory found for NewPasswordComponent. Did you add it to @NgModule.entryComponents?

最佳答案

我认为您观察到的行为在 github issue 中有所描述: 延迟加载模块的入口组件在根级注入(inject)器中不可用。

因此您需要在 NewPasswordModule 中提供使用入口组件的服务,而不是在 AppModule 中。

如果您正在寻找一种更通用的方法(假设您想在许多惰性加载模块中使用该服务),您可以看看这个 suggested solution ,它创建了一个通用服务,然后在 延迟加载功能模块。

关于angular - 如何将组件导入 Angular 中的服务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56702898/

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