Angular 5 - 在 HTML CSS 中使用来自视图模型的变量
Angular 5 - Use variable from view-model in HTML CSS
我的视图模型中有一个名为 setter 和 getter 的变量:orderStatusColor.
这是一个字符串,如下所示:“color:red”或“color:green”。
如何在我的 HTML 中使用它作为样式?我试过使用 ngStyle 但我收到一条错误消息
"DevicesStatusComponent.html:12 ERROR 错误:找不到不同的支持对象 'color: red'"
controller.ts
private orderStatusColorCode(code: string){
const codeRed = this.orderInProgressCmsModel.orderStatusColorRed.split(",");
if(codeRed.some(s => s.includes(code))){
this.orderStatusColor = "color: red";
}
return this.orderStatusColor;
}
orderViewModel.devices =
new DevicesStatusViewModel(
this.orderStatusColor
);
查看-model.ts
interface DevicesStatusViewModelI {
orderStatusColor: string;
}
export class DevicesStatusViewModel implements DevicesStatusViewModelI {
private _orderStatusColor = '';
get orderStatusColor(): string { return this._orderStatusColor; }
set orderStatusColor(orderStatusColor: string) {
this._orderStatusColor = (orderStatusColor != null) ? orderStatusColor : "";
}
constructor(orderStatusColor?: string) {
this.orderStatusColor = orderStatusColor;
}
}
HTML
<ng-container>
<p ngStyle="{{devicesStatusViewModel.orderStatusColor}}">Test</p>
</ng-container>
看来,你在变量devicesStatusViewModel.orderStatusColor
中传递了一个字符串,而应该是一个对象。如下图
component.ts
public style = {color:'blue'};
component.html
<h1 [ngStyle]="style">This is header in blue</h1>
看来您没有很好地使用 ngstyle 指令。
你应该把它放在 [] 之间,如官网所示 LINK
更改以下内容
if(codeRed.some(s => s.includes(code))){
this.orderStatusColor = '{"color": "red"}';
}
在组件中将 JSON 字符串解析为 JSON 对象(因为 ngStyle 需要一个对象)
this.orderStatusColor = JSON.parse('{"color": "red"}');
现在您可以在模板 html 中使用它,例如
<div [ngStyle]="orderStatusColor">
我的视图模型中有一个名为 setter 和 getter 的变量:orderStatusColor.
这是一个字符串,如下所示:“color:red”或“color:green”。
如何在我的 HTML 中使用它作为样式?我试过使用 ngStyle 但我收到一条错误消息
"DevicesStatusComponent.html:12 ERROR 错误:找不到不同的支持对象 'color: red'"
controller.ts
private orderStatusColorCode(code: string){
const codeRed = this.orderInProgressCmsModel.orderStatusColorRed.split(",");
if(codeRed.some(s => s.includes(code))){
this.orderStatusColor = "color: red";
}
return this.orderStatusColor;
}
orderViewModel.devices =
new DevicesStatusViewModel(
this.orderStatusColor
);
查看-model.ts
interface DevicesStatusViewModelI {
orderStatusColor: string;
}
export class DevicesStatusViewModel implements DevicesStatusViewModelI {
private _orderStatusColor = '';
get orderStatusColor(): string { return this._orderStatusColor; }
set orderStatusColor(orderStatusColor: string) {
this._orderStatusColor = (orderStatusColor != null) ? orderStatusColor : "";
}
constructor(orderStatusColor?: string) {
this.orderStatusColor = orderStatusColor;
}
}
HTML
<ng-container>
<p ngStyle="{{devicesStatusViewModel.orderStatusColor}}">Test</p>
</ng-container>
看来,你在变量devicesStatusViewModel.orderStatusColor
中传递了一个字符串,而应该是一个对象。如下图
component.ts
public style = {color:'blue'};
component.html
<h1 [ngStyle]="style">This is header in blue</h1>
看来您没有很好地使用 ngstyle 指令。 你应该把它放在 [] 之间,如官网所示 LINK
更改以下内容
if(codeRed.some(s => s.includes(code))){
this.orderStatusColor = '{"color": "red"}';
}
在组件中将 JSON 字符串解析为 JSON 对象(因为 ngStyle 需要一个对象)
this.orderStatusColor = JSON.parse('{"color": "red"}');
现在您可以在模板 html 中使用它,例如
<div [ngStyle]="orderStatusColor">