首页 > 解决方案 > NGXS State 共享子节点

问题描述

我有一个问题,我有两个门户,两种状态 SMS 和 Email 状态它们都必须使用 CommunicationFilterState 和 CommunicationRecipientsState 以上两个是两个不同的状态,它们作为

@State<SmsSettingsModel>({
    name: 'smsSettings',
    defaults: {
        id: null,
        name: null,
        type: null,
        status: null,
        eventId: null,
        communicationFilter: {
            filters: {},
            possibleValues: {},
            possibleFields: {
                userFields: [],
                systemFields: null,
                sessionFields: null
            }
        },
        recipients: {
            recipientSource: RecipientSource.PROJECT_DATABASE,
            uploadedListFile: null,
            recipientEmailField: null,
            recipientSmsField: null
        }
    },
    children: [CommunicationFilterState, CommunicationRecipientsState]
}) 
@State<EmailSettingsModel>({
    name: 'emailSettings',
    defaults: {
        id: null,
        languages: [],
        languageSettingsMap: defaultLanguageMap,
        type: null,
        emailField: '',
        communicationFilter: {
            filters: {},
            possibleValues: {},
            possibleFields: {
                userFields: [],
                systemFields: null,
                sessionFields: null
            }
        },
        recipients: {
            recipientSource: RecipientSource.PROJECT_DATABASE,
            uploadedListFile: null,
            recipientEmailField: 'email',
            recipientSmsField: null
        }
    },
    children: [CommunicationFilterState, CommunicationRecipientsState]
})

If the email is initialised and i switch to SMS when it initialises I get the following error :
Error: Child state not found: class CommunicationRecipientsState ...... 

我真的想知道如何解决这个问题,所以我如何让父状态共享两个孩子而不会崩溃

如果我先启动短信,它会起作用 如果我先启动电子邮件,它会起作用

但是,如果我在 SMS 之后启动电子邮件或在电子邮件之后启动 SMS,它将无法正常工作,因为它似乎已经初始化

标签: angulartypescriptfrontendstatengxs

解决方案


推荐阅读