Это точно правильно, потому что компилятор должен знать, какой тип он предназначен для распределения. Поэтому классы шаблонов, функции, перечисления и т. Д. Должны быть реализованы также в файле заголовка, если он должен быть опубликован или частично из библиотеки (статический или динамический), поскольку файлы заголовков НЕ скомпилированы в отличие от файлов c / cpp, которые находятся. Если компилятор не знает, что тип не может его скомпилировать. В .Net это возможно, потому что все объекты происходят из класса Object. Это не .Net.
Работает отлично. Я думаю, что вы имеете в виду два разных объекта, имеющих одинаковые значения атрибутов:
см. Html-код этого компонента:
<p>
Default appearance:
<mat-button-toggle-group name="fontStyle" aria-label="Font Style">
<mat-button-toggle value="bold">Bold</mat-button-toggle>
<mat-button-toggle value="italic">Italic</mat-button-toggle>
<mat-button-toggle value="underline">Underline</mat-button-toggle>
</mat-button-toggle-group>
</p>
<p>
Legacy appearance:
<mat-button-toggle-group appearance="legacy" name="fontStyle" aria-label="Font Style" multiple="true" [value]="selectedCompanies">
<mat-button-toggle *ngFor="let company of values"
[value]="company">{{company?.name}}</mat-button-toggle>
</mat-button-toggle-group>
</p>
И машинописный код для компонента
import {Component} from '@angular/core';
/**
* @title Button toggle appearance
*/
@Component({
selector: 'button-toggle-appearance-example',
templateUrl: 'button-toggle-appearance-example.html',
styleUrls: ['button-toggle-appearance-example.css'],
})
export class ButtonToggleAppearanceExample {
values:Comapny[]= [];
selectedCompanies:Comapny[]=[];
ngOnInit() {
this.values.push (new Comapny("First Company", "Address 1"));
this.values.push (new Comapny("Second Company", "Address 2"));
this.values.push (new Comapny("Third COmpany", "Address 3"));
this.selectedCompanies.push(this.values[0]);
this.selectedCompanies.push(this.values[1]);
}
}
class Comapny {
constructor (name:string, address:string){
this.name=name;
this.address=address;
}
name:string;
address:string;
}
попробуйте запустить его здесь, заменив код
. Здесь вывод с мультиатрибутом и двумя выбранными кнопками
Пожалуйста, убедитесь, что вы ссылаетесь на одни и те же объекты в обоих списках