Angular 角度数据绑定对象的私有属性
此类具有私有属性和gettersetter方法 seasure.ts:Angular 角度数据绑定对象的私有属性,angular,angular6,Angular,Angular6,此类具有私有属性和gettersetter方法 seasure.ts: export class Season { private _seasonId: number; private _name: string; get seasonId(): number { return this._seasonId; } set seasonId(value: number) { this._seasonId = value; } get name
export class Season {
private _seasonId: number;
private _name: string;
get seasonId(): number {
return this._seasonId;
}
set seasonId(value: number) {
this._seasonId = value;
}
get name(): string {
return this._name;
}
set name(value: string) {
this._name = value;
}
}
我有一个组件来展示它:
@Component({
selector: 'app-season',
templateUrl: './season.component.html',
styleUrls: ['./season.component.css']
})
export class SeasonComponent implements OnInit {
season: Season = new Season();
seasons: Season[] = [];
//....
// There is some stuff to fill 'seasons' array
private addSeason(seasonForm: NgForm) {
if (!this.isUpdateMode) {
this.addNewMemberToSeasons();
} else {
this.editSeasonsMember();
}
this.seasonsChange.emit(this.seasons.slice());
this.resetSeasonForm(seasonForm);
}
private editSeasonsMember() {
const editIndex = this.seasons.findIndex((s) => s.seasonId === this.season.seasonId);
this.seasons[editIndex] = Object.assign({}, this.season);
}
private addNewMemberToSeasons() {
const clone = Object.assign({}, this.season);
this.seasons.push(clone);
}
// ...
HTML
<li class="list-group-item ..." *ngFor="let season of seasons">
<div>
<h6 class="my-0">{{season.name}}</h6>
</div>
<span>
<span class="btn-group-sm" role="group">
<button type="button" class="btn-sm btn-outline-warning"
(click)="editSeason(season.name)">Edit</button>
<button type="button" class="btn-sm btn-outline-danger"
(click)="deleteSeason(season.name)">Delete</button>
</span>
</span>
</li>
如何使用插值绑定渲染具有私有属性的对象?
我用的是角度6
这是你的电话号码
很抱歉,为了可读性,我没有添加一些重要的
组件方法。我已经用方法更新了问题。事实上,问题就在这里:
const clone = Object.assign({}, this.season);
this.seasons.push(clone);
感谢用户184994。你是说{{seasure.name}}
不起作用?你能在StackBlitz中复制吗?我从未使用过StackBlitz,但我会尝试。是的,{seasure.name}
不起作用。在Typescript中,当成员标记为private时,不能从其包含类之外访问它。@Und3rTow是的,问题是get
访问器在{seasure.name}
@MuhammedOzdogan中执行对象.assign
,,您将丢失访问器,因此它将不再具有get
功能
const clone = Object.assign({}, this.season);
this.seasons.push(clone);