angular - 在多个组件中存储和使用数据

时间:2017-12-01 17:57:25

标签: javascript rxjs single-page-application angular-services angular5

我正在尝试使用 Angular 构建管理面板。请注意,这是我第一次使用Angular和第一次使用OOP构造。

我有一个页面,其中列出了所有产品类型,方法是选择或者单击任何产品类型。我将它们重定向到另一个包含相应产品品牌的页面。

因此,当我搜索互联网以查看跨多个组件共享数据的最佳方式时,我找到了 BehaviourSubject ,并且我成功地设法将用户从{{1}重定向页面到products页面。现在,我想在选择品牌后将用户从brands页面路由到新页面。

到目前为止,我设法只使用brands类型的一个变量来执行 BehaviourSubject ,该变量从产品页面中选择一个产品。现在,我可以选择让我的用户选择多个品牌。

如何将此数据传递到下一页?当我选择品牌时,我仍然可以使用 BehaviouSubject 访问我的string值。我正在考虑创建一个类并更新该类的最后一个值,遗憾的是我不能这样做。

CODE

product

这段代码没有给我带来任何关于tslint的错误,但是在浏览器上它会抛出一个错误:

@Injectable()
export class UserActionService {

    private product;
    private currentProduct;

    constructor() {
        this.product = new BehaviorSubject<UserActions>(null);
        this.currentProduct = this.product.asObservable();
    }

    changeProduct(product: UserActions) {
        this.product.lastProduct.next(product);
    }
}

export class UserActions {
    private lastProduct: string;
    private lastBrands: Array<string>;
}

我不知道我是否做得对,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

我认为在重定向到新网页后,您需要的是GetCurrentValue。参考Simple way to get the current value of a BehaviorSubject with rxjs5,您可以这样做:

getProduct() : UserActions {
    return this.product.value;
}
changeProduct(product: UserActions) {
    this.product.next(product);
}