如何解决是否可以在模块中使用类方法,但不能使用 angular 和 typescript 将其导出到其他模块
考虑这个例子
export class A{
b():void{}
c():void{}
}
我在模块 M 我想在模块 M 中使用 b() 和 C(),但我不想将方法 b() 公开给任何其他模块,但仍然可以访问方法 c()。这在角度上可能吗?
解决方法
我假设你的类代表一个服务。
您可以定义一个基类,您可以在其中设置服务的共享逻辑,然后使用 b()
方法的不同实现扩展该类。为避免重复您的 b()
逻辑,您可以将该逻辑封装在基类的受保护方法中,并让您的 b()
的公共和私有版本只调用该方法:
export class BaseService {
protected _b() {
return 'This string comes from b() method'
}
c() {
return 'This string comes from c() method'
}
}
@Injectable()
export class BaseServiceWithPublicB extends BaseService {
b() {
return super._b()
}
}
@Injectable()
export class BaseServiceWithPrivateB extends BaseService{
private b() {
return super._b()
}
}
然后您在模块 M 中提供 BaseServiceWithPublicB
,在任何其他模块中提供 BaseServiceWithPrivateB
:
@NgModule({
declarations: [],providers: [{provide: BaseService,useClass: BaseServiceWithPublicB}],exports: []
})
export class ModuleWithPublicB { }
@NgModule({
declarations: [],useClass: BaseServiceWithPrivateB}],exports: []
})
export class ModuleWithPrivateB { }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。