ご質問の長らって申し訳ありません。私はいくつかの設計上の問題があります。角度2異なるビジネスロジックを使用する複数の場所で同じコンポーネント
roomView配列を@InputとしてHTMLページに表示するコンポーネントがあります。
export class RoomView {
"id": string,
"name": string,
"markerIcon": string,
"backgroundColorClass": string
}
部屋-browser.component.ts
@Component({
selector: 'room-browser',
templateUrl: 'room-browser.component.html',
})
export class RoomBrowserComponent {
@Input() roomsList: RoomView[]: = [];
}
部屋-browser.component.html
<div *ngFor="let room of roomsList">
<div class="room.backgroundColorClass">
{{room.name}}
<i class="{{room.markerIcon}}"></i>
</div>
私の一般的な部屋のCOMPON ENTは部屋-ブラウザにroomViewを提供
ジェネリック-room.component.ts
@Component({
selector: 'room',
templateUrl: 'room.html',
})
export class GenericRoomComponent implements OnInit {
@Input() source: string;
private roomView: RoomView[] = [];
ngOnInit() {
this.roomView = // i am getting this from backed successfully
// here I need to decide marker icon and background color class based on some criteria which differs from page to page
// I have different sections like space, energy, maintenance etc...
// for space, needs to get space usage for rooms from backend and then decide color
// for energy, needs to get energy usage and decide the colors
// for maintenance, needs get devices information of rooms and decide color
//I want to avoid something like this
if (this.source === 'space') {
// get space usage
} else if (this.source === 'energy') {
// get space usage
} else if (this.source === 'maintenance') {
// get device info and decide color
}
}
}
room.html
<room-browser [roomsList]="roomView"></room-browser>
space.html
<room [source]="space"></room>
energy.html
<room [source]="energy"></room>
maintenance.html
<room [source]="maintenance"></room>
私はページへのページとは異なるいくつかの基準に基づいて、マーカーアイコンと背景色のクラスを決定する必要があります。
私はスペース、エネルギー、メンテナンスなどのさまざまなセクションを持っていますが、スペースのためにバックエンドからのスペースの使用を取得し、次に色を決定する必要があります。エネルギーはエネルギー使用量を取得し、部屋のデバイス情報を取得して色を決定する
このユースケース固有のロジックを汎用コンポーネント内でどのように実装できますか?
colorプロパティを追加するには、スペース、エネルギー、またはメンテナンスの中でルームコンポーネントを使用しているかどうかに基づいて、私は異なるロジックを持っています。スペースのために私はバックエンドからスペース使用量を取得し、2時間以下の赤色などの使用方法のような色を決める必要があります。メンテナンスセクション用デバイスにエラーがある場合は、部屋のデバイスを取得して赤色にする必要があります。だから私の質問は、このロジックを実装する場所と方法です。 –