如何将类成员变量传递给另一个组件角度?

Posted

技术标签:

【中文标题】如何将类成员变量传递给另一个组件角度?【英文标题】:How to pass a class member variable to another component angular? 【发布时间】:2021-09-20 18:58:09 【问题描述】:

car.ts 在“export class Car”中有“isNewCar”变量,我需要将“isNewCar”变量导出到另一个目录中的另一个组件 carSale.ts,而不是在同一个模块中。是否必须将 car.ts 模板添加到 carSale.ts 文件并添加“isNewCar”作为输入?

编辑:car.ts 具有导出类 Car isNewCar:boolean = false; 和 car.ts 是一个组件。 carSale.ts 也是一个组件,但它与 car.ts 不在同一个/共享模块中,我需要 carSale.ts,最终需要 carSale.ng.html 才能访问 isNewCar 变量。那么,您能告诉我如何使用 viewChild 装饰器或 carSale.ts 中的其他任何东西来访问该变量吗?理想情况下,我不想制作共享模块,但如果必须,我可以。

【问题讨论】:

【参考方案1】:

您可以像这样扩展Car 类,

 export class CarSale extends Car 
    
    ngOnInit()
      this.isNewCar = true;
    
 

通过扩展Car 类,您将能够从CarSale 类访问isNewCar 属性

【讨论】:

【参考方案2】:

需要有关用例的更多信息。 car.ts 是组件还是模型? 如果 car.ts 是一个模型,您应该将它聚合到您的 carSale.ts 组件中,或者,如果确实需要,通过服务使其在全球范围内可用。 如果 car.ts 是具有自己模板的组件,那么您可以使用输出事件发射器或使用 viewChild 装饰器来访问该值。 还有其他共享变量的方法,但以上是更常见的。

汽车.ts:

/*
* This is a POJO
*/
export class Car
    isNew: boolean;

汽车销售.component.ts:

export class CarSale 

    car: Car; // Car is aggregate into CarSale

    ngOnInit()
        car = new Car();
        car.isNew = true;
    


汽车销售.component.html

<-- just use your car object like this --!>
<div *ngIf="car">Is the car new ?  car.isNew </div>

【讨论】:

car.ts 具有导出类 Car isNewCar:boolean = false; 和 car.ts 是一个组件。 carSale.ts 也是一个组件,但它与 car.ts 不在同一个/共享模块中,我需要 carSale.ts,最终需要 carSale.ng.html 才能访问 isNewCar 变量。那么,您能告诉我如何使用 viewChild 装饰器或 carSale.ts 中的其他任何东西来访问该变量吗?理想情况下,我不想制作共享模块,但如果必须,我可以。如果您需要更多说明,请告诉我。 首先,你的两个组件 car.ts 和 carSale.ts 是高度耦合的,必须集成到同一个模块中。其次,您的 car.ts 似乎是一个域模型,必须用作数据结构(其中没有任何方法)。最后,您的 carSale 声明您的汽车对象,然后您可以在 ts 和模板中使用它。 我刚刚编辑了我之前的帖子。希望这有帮助。享受角度的乐趣;)

以上是关于如何将类成员变量传递给另一个组件角度?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 变量在传递给另一个组件后未定义

将类的成员函数分配给 C++ 中的函数指针

试图将类成员公开为只读或公共常量

Python: 通过引用将类成员项传递给它的一个成员函数。

11.面向对象概述,类和对象,成员变量和局部变量

如何将变量从一个类传递给另一个?