角度5:将任何对象投射到对象

时间:2018-08-02 21:08:24

标签: angular casting

我使用Angular 5,我希望将任何类型的对象转换为对象。

<select #selectedSupplier (change)="onSelectSupplier(selectedSupplier.value)">
    <option *ngFor="let supplier of suppliers" [value]="supplier">                                                                                                                                                
        {{ supplier.name }}
    </option>
</select>

在类型级别,当我尝试使用此功能在控制台上显示结果

// Result is [object Object]
onSelectSupplier(supplier){
    console.log(supplier);
}

// Result is undefined
onSelectSupplier(supplier){
    console.log(supplier.name);
}

所以我想向供应商投下:任何下面的对象

export class Supplier{
    name: string;

    constructor(name: string){
        this.name=name;
    }
}

1 个答案:

答案 0 :(得分:1)

类型仅在运行时存在,因此不能解决您的问题。

实际上,问题出在使用[value],因为它只能处理字符串。这就是为什么将其转换为[object Object](实际上是一个字符串)的原因。您应该改为使用ngValue作为对象。我也建议像这样使用ngModel

<select #selectedSupplier [(ngModel)]="selected" (change)="onSelectSupplier(selected)">
    <option *ngFor="let supplier of suppliers" [ngValue]="supplier">                                                                                                                                                
        {{ supplier.name }}
    </option>
</select>

Here is a Stackblitz demo