angular - 我找不到如何从子类访问 DI 属性
问题描述
我已经在我的角度应用程序上实现了这种方法,并且登录/注册正在工作。
现在我希望添加一个函数来在我的客户注册/登录组件初始化时运行 OnInit。
具体来说,我希望使用/注入
- 我的服务
- ActivatedRoute/ActivatedRouteSnapshot 以访问两个组件上的 url 参数。
- 位置策略
进入我的子组件(LoginComponent 和 RegistrationComponent),因为它们都分别派生自 NbLoginComponent 和 NbRegisterComponent
这是我的 register.component.ts
export class NgxRegisterComponent extends NbRegisterComponent {}
这是我的 NbRegisterComponent
export declare class NbRegisterComponent {
constructor(
service: NbAuthService,
options: {},
cd: ChangeDetectorRef,
router: Router);
register(): void;
getConfigValue(key: string): any;
static ɵfac: ɵngcc0.ɵɵFactoryDef<NbRegisterComponent>;
static ɵcmp: ɵngcc0.ɵɵComponentDefWithMeta<NbRegisterComponent, "nb-register", never, {}, {}, never>;
}
我被困在我不能在 NbRegisterComponent 上使用 Injector 因为构造函数不会接受任何属性,而不是参数。
另外,我尝试在 NbRegisterComponent 中声明受保护的成员并将其添加到构造函数中
protected myService : MyService
然后在子类 RegisterComponent 中,我将属性添加到构造函数和 Super() 的参数中,但注入的属性都是空的/未定义的。
任何帮助都会大有帮助。
解决方案
嘿嘿嘿,
在子组件中,我为所有需要的对象/属性添加了一个提供者列表,例如
@Component({
//...
providers: [
{provide: VisitsService, useClass : VisitsService},
]
})
在子组件的构造函数中,我将 @Inject() 函数附加为
constructor(
@Inject(ActivatedRoute)activateRoute : ActivatedRoute,
@Inject(VisitsService) protected visitService: VisitsService,
){
super(
activateRoute,
visitService);
}
现在一切正常。
哦!请记住,父组件也将这些属性注入其构造函数,并且参数的顺序很重要。
推荐阅读
- angular - 从组件 HTML 标记获取组件引用
- windows - 尝试在 powershell 中执行 .exe 文件时解析错误
- regex - 如何使用 serde 创建一个表,其中文本文件具有固定宽度(非分隔)列?
- sql - 如何排除特定表寄存器中的查询
- android - 使用多个 AdLoader 对象加载多个广告时如何避免重复?
- python-3.x - doc.发送到文本文件
- r - R 回归中的 I(variable_1/variable_2)
- sql - 如何提高 HAVING (SQLite) 的 SQL 查询性能
- javascript - CORS '*' 似乎不适用于 Chrome,但适用于 Postman
- powershell - CredSSP - 访问被拒绝。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题