【发布时间】:2020-05-08 04:39:55
【问题描述】:
我是 Angular 的初学者。 我创建了一个演示应用程序。 下面是我的代码
servers.component.ts
import { Component, OnInit, Input } from '@angular/core';
import { Server } from './server.model';
@Component({
selector: 'app-servers',
templateUrl: './servers.component.html',
styleUrls: ['./servers.component.css'],
})
export class ServersComponent implements OnInit {
allowNewServer = false;
serverCreationStatus = 'no server created';
serverName = '';
ipAddress = '';
owner = '';
server: Server[] = [];
serverCreated = false;
constructor() {
}
ngOnInit(): void {}
onCreateServer() {
this.serverCreated = true;
this.serverCreationStatus = 'server created';
this.server_list.push(server;
}
}
我有一个模型文件,我在其中声明了一个类和构造函数来创建服务器
server.model.ts
export class Server {
public serverName: string;
public ipAddress: string;
public owner: string;
constructor(ame: string, ip: string, owner: string) {
this.serverName = name;
this.ipAddress = ip;
this.owner = owner;
}
}
在 servers.component.html 我使用 ngModel 将对象属性与表单字段绑定 服务器.component.html
<form action="">
<div class="row">
<label for="serverName" class="col-sm-2">Server Name</label>
<input
type="text"
class="form-control col-sm-10"
[(ngModel)]="server.serverName"
[ngModelOptions]="{ standalone: true }"
/>
</div>
<div class="row">
<label for="ipAddress" class="col-sm-2">IP Adress</label>
<input
type="text"
class="form-control col-sm-10"
[(ngModel)]="server.ipAddress"
[ngModelOptions]="{ standalone: true }"
/>
</div>
<div class="row">
<label for="owner" class="col-sm-2">Owner</label>
<input
type="text"
class="form-control col-sm-10"
[(ngModel)]="server.owner"
[ngModelOptions]="{ standalone: true }"
/>
</div>
<button
class="btn btn-primary"
[disabled]="!allowNewServer"
(click)="onCreateServer()"
>
Add server
</button>
</form>
<app-server *ngFor="let s of server" [data]="s"> </app-server>
and my child component `server.component.ts`
import { Component, Input } from '@angular/core';
import { Server } from '../servers/server.model';
@Component({
selector: 'app-server',
templateUrl: './server.component.html',
styles: [
`
.online {
color: white;
}
`,
],
})
export class ServerComponent {
serverStatus = 'offline';
@Input() data: Server;
constructor() {
this.serverStatus = Math.random() > 0.5 ? 'online' : 'offline;';
}
getColor() {
return this.serverStatus === 'online' ? 'green' : 'red';
}
}
我的 server.component.html
<p
[ngStyle]="{ backgroundColor: getColor() }"
[ngClass]="{ online: serverStatus === 'online' }"
>
Server created with name {{ data }}
</p>
我在上面的代码中有两个错误
-
在 servers.component.html 中使用 ngModel 时
错误 TS2339:“服务器 []”类型上不存在属性“ipAddress”。
34 [(ngModel)]="server.ipAddress"
所有字段都出现此错误
2.无法显示创建的服务器数据(无法将对象数据传递给子组件) 在servers.component.html中调用子组件
请帮忙。 提前致谢
【问题讨论】:
-
使用名称 {{ data }} 创建的服务器应该是 {{ data.serverName }},不能使用字符串插值绑定 Object。
-
该模型中的构造函数,看起来很奇怪
标签: javascript angular