微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在模块中使用类方法,但不能使用 angular 和 typescript 将其导出到其他模块

如何解决是否可以在模块中使用类方法,但不能使用 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 举报,一经查实,本站将立刻删除。