Angular 10从秋田商店查询时未检测到更改

Angular 10从秋田商店查询时未检测到更改,angular,typescript,angular-akita,Angular,Typescript,Angular Akita,很可能我的秋田店设置不正确,但我已经非常仔细地遵循了文档 我将一些routerLinks设置为从商店动态填充(应用程序行为取决于用户导航时更新路由) 在返回从中派生新路由的应用程序状态的订阅中,如果我将返回的对象分配给我的组件参数,我会得到可怕的表达式changedafterithasbeencheckeederror 奇怪的是,如果我在订阅中为该属性分配一个静态对象,我不会得到错误(但该值是静态的,不是我需要的) 我能够让它与.detectChanges()一起工作,但我的印象是秋田为我们处理

很可能我的秋田店设置不正确,但我已经非常仔细地遵循了文档

我将一些
routerLink
s设置为从商店动态填充(应用程序行为取决于用户导航时更新路由)

在返回从中派生新路由的应用程序状态的订阅中,如果我将返回的对象分配给我的组件参数,我会得到可怕的
表达式changedafterithasbeencheckeederror

奇怪的是,如果我在订阅中为该属性分配一个静态对象,我不会得到错误(但该值是静态的,不是我需要的)

我能够让它与
.detectChanges()
一起工作,但我的印象是秋田为我们处理更改检测,所以我非常困惑(并且不希望每次我订阅商店查询时都必须手动检测更改)

工作代码(在导航栏中):

设置状态的代码(在其中一个可导航组件中):

query.ts:

import { Injectable } from '@angular/core';
import { Query } from "@datorama/akita";
import { AppState, AppStore } from './store'

@Injectable({providedIn: 'root'})
export class AppQuery extends Query<AppState> {
  constructor(private appStore: AppStore){
    super(appStore)
  }
  appState$ = this.select();
}
  }
  ngOnInit(): void {  
    this.route.params.subscribe(
      (params: Params) => {
        this.slug = params['slug'] ? params['slug'] : '';
        this.appService.updateTab('activeRosterSlug',this.slug);
      }
    )
  }
import { Injectable } from '@angular/core';
import { Query } from "@datorama/akita";
import { AppState, AppStore } from './store'

@Injectable({providedIn: 'root'})
export class AppQuery extends Query<AppState> {
  constructor(private appStore: AppStore){
    super(appStore)
  }
  appState$ = this.select();
}
  }
import { Injectable } from '@angular/core';
import { Store, StoreConfig } from '@datorama/akita';

export type AppState = {
  activeRosterSlug: string, 
  activeMatchSlug: string;
  activeEventSlug: string;
  activeManifestSlug: string;
  maximixed: boolean;
  footerExp: boolean;
}

export const getInitialState = () => {
  return{
    activeRosterSlug: '',
    activeMatchSlug: '',
    activeEventSlug: '',
    activeManifestSlug: '',
    maximixed: false,
    footerExp: false
  }
}

@Injectable({providedIn: 'root'})
@StoreConfig({name: 'appStore'})
export class AppStore extends Store<AppState> {
  constructor(){
    super(getInitialState())
  }
}
import { Injectable } from '@angular/core';
import { AppStore } from './store';

@Injectable({providedIn: 'root'})
export class AppService {
  constructor(private appStore: AppStore) {}

  updateTab(tabName: string, tabId) {
    let update = {}
    update[tabName] = tabId;
    this.appStore.update(update);
  } 
}