如何显示从代码初始化的 angular 组件?
How can I display an angular component that is initialized from code?
我有以下设置:
用户组件 HTML:
<div class="users">
<ul class="users__list">
<li *ngFor="let user of users"></li>
</ul>
</div>
用户组件 TS:
import { Component, OnInit } from '@angular/core';
import { UserComponent } from '../user/user.component';
@Component({
selector: 'app-users',
templateUrl: './users.component.html',
styleUrls: ['./users.component.scss'],
})
export class UsersComponent implements OnInit {
users: UserComponent[] = [];
ngOnInit(): void {
this.users.push(new UserComponent('Test User'));
}
}
用户组件HTML:
{{ name }}
用户组件 TS:
import { Component, Inject, OnInit } from '@angular/core';
@Component({
selector: 'app-user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.scss'],
})
export class UserComponent {
constructor(@Inject('name') public name: string) {}
}
我的目标是能够通过 new UserComponent('NAME');
之类的代码动态地(例如使用按钮)生成新用户,并将他们添加到用户组件中的用户数组中。
我的问题是:如何显示从代码初始化的组件?
我试过这样的事情:
<div class="users">
<ul class="users__list">
<li *ngFor="let user of users">{{ user }}</li>
</ul>
</div>
但这只是输出了“[object Object]”。
也许我的方法完全错误,但我认为这可能是最简单的解决方案,如果可行的话。
如何在模板中显示对象 属性?
您使用的是一个对象,所以您必须在HTML中指明您要显示的对象属性是什么:
<div class="users">
<ul class="users__list">
<li *ngFor="let user of users">{{ user.name }}</li>
</ul>
</div>
如何生成更多的项目并显示在列表中?
Angular,自动将您的 TS 变量与您的模板绑定。因此,只需使用 Angular 将更新视图的新用户更新您的用户列表。例如:
/* User.ts */
export class User {
name: string;
constructor(name: string) {
this.name=name;
}
}
/* UsersComponent.ts */
addUser() {
const newUser = new User("I'm a new user!");
this.users.push(newUser);
}
您需要跟踪大部分数据,Angular 会为您处理视图。
看看这个demo
我有以下设置:
用户组件 HTML:
<div class="users">
<ul class="users__list">
<li *ngFor="let user of users"></li>
</ul>
</div>
用户组件 TS:
import { Component, OnInit } from '@angular/core';
import { UserComponent } from '../user/user.component';
@Component({
selector: 'app-users',
templateUrl: './users.component.html',
styleUrls: ['./users.component.scss'],
})
export class UsersComponent implements OnInit {
users: UserComponent[] = [];
ngOnInit(): void {
this.users.push(new UserComponent('Test User'));
}
}
用户组件HTML:
{{ name }}
用户组件 TS:
import { Component, Inject, OnInit } from '@angular/core';
@Component({
selector: 'app-user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.scss'],
})
export class UserComponent {
constructor(@Inject('name') public name: string) {}
}
我的目标是能够通过 new UserComponent('NAME');
之类的代码动态地(例如使用按钮)生成新用户,并将他们添加到用户组件中的用户数组中。
我的问题是:如何显示从代码初始化的组件?
我试过这样的事情:
<div class="users">
<ul class="users__list">
<li *ngFor="let user of users">{{ user }}</li>
</ul>
</div>
但这只是输出了“[object Object]”。
也许我的方法完全错误,但我认为这可能是最简单的解决方案,如果可行的话。
如何在模板中显示对象 属性?
您使用的是一个对象,所以您必须在HTML中指明您要显示的对象属性是什么:
<div class="users">
<ul class="users__list">
<li *ngFor="let user of users">{{ user.name }}</li>
</ul>
</div>
如何生成更多的项目并显示在列表中?
Angular,自动将您的 TS 变量与您的模板绑定。因此,只需使用 Angular 将更新视图的新用户更新您的用户列表。例如:
/* User.ts */
export class User {
name: string;
constructor(name: string) {
this.name=name;
}
}
/* UsersComponent.ts */
addUser() {
const newUser = new User("I'm a new user!");
this.users.push(newUser);
}
您需要跟踪大部分数据,Angular 会为您处理视图。
看看这个demo