Angular nativescript不工作的代码共享项目中的包装器服务
我试图为我的服务Angular nativescript不工作的代码共享项目中的包装器服务,angular,dependency-injection,nativescript,Angular,Dependency Injection,Nativescript,我试图为我的服务notificationservice创建一个包装器,这样我就可以使用具有相同导入的“移动版本”。但它似乎不起作用 这是我的代码: 我的应用程序模块.tns.ts @NgModule({ declarations: [ AppComponent, AutoGeneratedComponent, LoginComponent, HideActionBarDirective ], imports: [NativeScriptModule,
notificationservice
创建一个包装器,这样我就可以使用具有相同导入的“移动版本”。但它似乎不起作用
这是我的代码:
我的应用程序模块.tns.ts
@NgModule({
declarations: [
AppComponent,
AutoGeneratedComponent,
LoginComponent,
HideActionBarDirective
],
imports: [NativeScriptModule, AppRoutingModule],
providers: [
{
provide: CustomStorageServiceService,
useValue: MovilStorageServiceService
},
{
provide: NotificacionesService,
useValue: NotificacionesMovilService
}
],
bootstrap: [AppComponent],
schemas: [NO_ERRORS_SCHEMA]
})
@Injectable({
providedIn: "root"
})
export class NotificacionesMovilService {
constructor() {
console.log('NotificacionesMovilService')
}
alerta(title, message, okButtonText = "ok") {
dialogs.alert({ title, message, okButtonText }).then(respuesta => {
console.log("termino");
});
}
error(title, message, okButtonText = "ok", cb = () => {}) {
console.log('Estamos en error')
dialogs.alert({ title, message, okButtonText }).then(respuesta => {
cb();
});
}
}
import swal from "sweetalert2";
@Injectable({
providedIn: "root"
})
export class NotificacionesService {
constructor() {}
alerta(title, message, okButtonText = "ok") {
swal.fire(title, message, 'warning')
}
error(title, message, okButtonText = "ok", cb = () => {}) {
swal.fire(title, message, 'error').then( (Parametros)=>{
cb()
} )
}
}
通知移动服务.ts
@NgModule({
declarations: [
AppComponent,
AutoGeneratedComponent,
LoginComponent,
HideActionBarDirective
],
imports: [NativeScriptModule, AppRoutingModule],
providers: [
{
provide: CustomStorageServiceService,
useValue: MovilStorageServiceService
},
{
provide: NotificacionesService,
useValue: NotificacionesMovilService
}
],
bootstrap: [AppComponent],
schemas: [NO_ERRORS_SCHEMA]
})
@Injectable({
providedIn: "root"
})
export class NotificacionesMovilService {
constructor() {
console.log('NotificacionesMovilService')
}
alerta(title, message, okButtonText = "ok") {
dialogs.alert({ title, message, okButtonText }).then(respuesta => {
console.log("termino");
});
}
error(title, message, okButtonText = "ok", cb = () => {}) {
console.log('Estamos en error')
dialogs.alert({ title, message, okButtonText }).then(respuesta => {
cb();
});
}
}
import swal from "sweetalert2";
@Injectable({
providedIn: "root"
})
export class NotificacionesService {
constructor() {}
alerta(title, message, okButtonText = "ok") {
swal.fire(title, message, 'warning')
}
error(title, message, okButtonText = "ok", cb = () => {}) {
swal.fire(title, message, 'error').then( (Parametros)=>{
cb()
} )
}
}
notifications.services.ts
@NgModule({
declarations: [
AppComponent,
AutoGeneratedComponent,
LoginComponent,
HideActionBarDirective
],
imports: [NativeScriptModule, AppRoutingModule],
providers: [
{
provide: CustomStorageServiceService,
useValue: MovilStorageServiceService
},
{
provide: NotificacionesService,
useValue: NotificacionesMovilService
}
],
bootstrap: [AppComponent],
schemas: [NO_ERRORS_SCHEMA]
})
@Injectable({
providedIn: "root"
})
export class NotificacionesMovilService {
constructor() {
console.log('NotificacionesMovilService')
}
alerta(title, message, okButtonText = "ok") {
dialogs.alert({ title, message, okButtonText }).then(respuesta => {
console.log("termino");
});
}
error(title, message, okButtonText = "ok", cb = () => {}) {
console.log('Estamos en error')
dialogs.alert({ title, message, okButtonText }).then(respuesta => {
cb();
});
}
}
import swal from "sweetalert2";
@Injectable({
providedIn: "root"
})
export class NotificacionesService {
constructor() {}
alerta(title, message, okButtonText = "ok") {
swal.fire(title, message, 'warning')
}
error(title, message, okButtonText = "ok", cb = () => {}) {
swal.fire(title, message, 'error').then( (Parametros)=>{
cb()
} )
}
}
当我调用此服务时,出现下一个错误:
错误类型错误:此.\u NotificationsService.ERROR不是函数
但如果我颠倒这个顺序:
{
provide: NotificacionesMovilService,
useValue: NotificacionesService
}
我做错了什么?因为我没有注入现有的服务,所以我需要为
useClass
更改属性useValue
别名类提供程序
假设一个旧组件依赖于
OldLogger
classOldLogger
与NewLogger
具有相同的界面,但是
由于某些原因,您无法更新旧组件以使用它
当旧组件使用oldloge
r记录消息时,您需要
改为使用NewLogger
的单例实例来处理它。在这种情况下,,
依赖项注入器应该在
组件请求新的或旧的记录器。OldLogger
应该
是新记录器的别名
如果您尝试使用useClass
将OldLogger
别名为NewLogger
,则会导致
在应用程序中使用两个不同的NewLogger
实例
[ NewLogger,
// Not aliased! Creates two instances of `NewLogger`
{ provide: OldLogger, useClass: NewLogger}]
确定
只有一个带有
使用现有的
选项
[ NewLogger,
// Alias OldLogger w/ reference to NewLogger
{ provide: OldLogger, useExisting: NewLogger}]
{provide:NotificacionesService,useValue:NotificacionesMovilService}
提供一般服务使用私有实现。