You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中TypeScript泛型状态管理服务无法返回预期对象问题排查

问题原因及解决办法

核心问题:Wrap类未保存实例属性

你的Wrap类构造函数仅打印了参数,但没有将stateId和data赋值给实例的属性,导致创建的Wrap对象没有任何可访问的状态数据,所以console.log(res)时看不到预期的内容,看起来像空对象。

修复Wrap类:

export class Wrap {
    // 定义实例属性
    public stateId: state1;
    public data?: any;

    constructor(stateId: state1, data?: any){
        console.log("stateId", stateId, data)
        // 将参数赋值给实例属性
        this.stateId = stateId;
        this.data = data;
    }
}

额外注意点:状态更新的引用比较逻辑

changeState方法里的this.state === nextState是引用比较,因为每次new Wrap()都会生成新对象,所以这个判断当前不会阻止状态更新。但如果后续你想复用同一个Wrap对象实例,这个判断会生效。如果需要按值比较状态是否变化,得自定义比较逻辑,比如对比stateId和data的具体值。

验证效果

修改Wrap类后,在hello类的订阅中console.log(res)就能看到包含stateId和data属性的完整Wrap对象,初始状态和变更后的状态都能正常输出。

内容的提问来源于stack exchange,提问作者Namit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:20:14