Angular 中的反序列化和循环依赖

Deserialize and cyclic dependencies in Angular

我有几个 model.ts 文件。 当我使用 httpClient 时,我得到一个 JSON 对象,但它不能正常工作,因为我必须反序列化它们:.

但从那以后,我找到了帮助我反序列化所有模型的项目“class-transformer”。 我的服务有:

public method(cli: any): Observable<A> {
    const formData = new FormData();
    formData.append('cli', JSON.stringify(cli));
    return this.http.post<A>('/my/url',
        formData, {
        withCredentials: true
    }).pipe(first(),
        map(res => {
            return plainToClass(A, res);
        })
    );
}

对于像这样的模型:

// A.model.ts
import { Type } from 'class-transformer';
import { B } from './B.model';

export class A {

    // Some properties
    @Type(() => B)
    b: B[]

    // Some methods
}

和乙

// B.model.ts
import { Type } from 'class-transformer';
import { A } from './A.model';


export class B {

    // Some properties
    @Type(() => A)
    a: A[]

    // Some methods
}

但是,在编译时我得到了“循环依赖”并且确实存在循环依赖...

寻找解决方案我知道我可以使用 Barrel (https://github.com/typestack/class-transformer/issues/230),但它没有用。 我唯一的限制是我必须保持这种关系 -> (或非常相似的东西,因为我无法修改后端,所以我将通过 httpClient 接收数据)。

知道如何解决循环依赖吗?

最后,我使用了桶解决方案。似乎在我的其余代码中直接导入了 class A,我将它们更改为使用桶并且一切正常(我仍然有警告。但它有效)

// C.model.ts

// the problem is here
import { A } from './bla/A.model';


export class C {

}
// C.model.ts

import { A } from './bla';

export class C {

}

并且在 ./bla 我有一个 index.ts 与所有模型导出