如何在 Akita 中声明 Query/Service 以便在另一个模块中使用它
How to declare a Query/Service in Akita in order to use it in another module
我开始在我的离子应用程序中使用 Akita。
我有一个 SessionModule
,我在其中声明了一个 SessionService
、SessionQuery
、...
但是我想在我的 app.component.ts
.
中收听 SessionQuery
我试图在 SessionModule
中声明所有内容:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SessionQuery } from './store/session.query';
import { SessionService } from './store/session.service';
@NgModule({
declarations: [
SessionQuery,
SessionService
],
imports: [
CommonModule
],
exports:[
SessionQuery,
SessionService
]
})
export class SessionModule { }
我在 app.module.ts
中声明为 import
并在我的 App.Component.ts:
中使用它
public name$ = this.sessionQuery.selectName$;
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private sessionQuery: SessionQuery
) {
this.initializeApp();
}
但是当我 运行 它时,我得到了一些错误:
Error: Unexpected value 'SessionQuery' declared by the module 'SessionModule'. Please add a @Pipe/@Directive/@Component annotation.
Unexpected value 'SessionService' declared by the module 'SessionModule'. Please add a @Pipe/@Directive/@Component annotation.
我该怎么办?是否必须仅在声明查询的同一模块中使用查询?
我找到了解决方案:
事实上,您不需要 import/export 任何东西,但是,您需要通过在每个 class 声明之前放置它来标记 service+store+query 可注入:
@Injectable({
providedIn: 'root'
})
我开始在我的离子应用程序中使用 Akita。
我有一个 SessionModule
,我在其中声明了一个 SessionService
、SessionQuery
、...
但是我想在我的 app.component.ts
.
我试图在 SessionModule
中声明所有内容:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SessionQuery } from './store/session.query';
import { SessionService } from './store/session.service';
@NgModule({
declarations: [
SessionQuery,
SessionService
],
imports: [
CommonModule
],
exports:[
SessionQuery,
SessionService
]
})
export class SessionModule { }
我在 app.module.ts
import
并在我的 App.Component.ts:
中使用它 public name$ = this.sessionQuery.selectName$;
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private sessionQuery: SessionQuery
) {
this.initializeApp();
}
但是当我 运行 它时,我得到了一些错误:
Error: Unexpected value 'SessionQuery' declared by the module 'SessionModule'. Please add a @Pipe/@Directive/@Component annotation.
Unexpected value 'SessionService' declared by the module 'SessionModule'. Please add a @Pipe/@Directive/@Component annotation.
我该怎么办?是否必须仅在声明查询的同一模块中使用查询?
我找到了解决方案:
事实上,您不需要 import/export 任何东西,但是,您需要通过在每个 class 声明之前放置它来标记 service+store+query 可注入:
@Injectable({
providedIn: 'root'
})