【问题标题】:Angular 2 add new item from inputAngular 2从输入中添加新项目
【发布时间】:2017-12-01 23:40:52
【问题描述】:

我是 Angular2 的新手,我试图从输入中向列表中添加一个新项目。但是然后点击提交我而不是文本[object Object]。

这是我的代码:

app.component.html

<form (submit)="addItem(item)">
    <md-input-container>
      <input [(ngModel)]="name" mdInput placeholder="add" name="addNew">
    </md-input-container>
      <button type="submit" md-icon-button>
          <i class="material-icons">send</i>
    </button>
    </form>

app.component.ts

items = Players;
 name;

 addItem(name): void {
        this.items.push(new Player({
            name : name
        }));
    }

player.ts

export class Player {
    id: number;
    name: string;
    count: number;

    constructor(name){
        this.id;
        this.name = name;
        this.count = 0;
    }

所有玩家.ts

export let Players: Player[] = [
];

感谢您的回答

【问题讨论】:

    标签: javascript angular typescript input


    【解决方案1】:

    我会写一个完整的答案。

    在您的组件(TS 文件)中:

    items = Players;
    name;
    
    addItem() { this.items.push(new Player({ name : this.name })); }
    

    在您的 HTML 中:

    <form (submit)="addItem()" novalidate>
        <md-input-container>
            <input [(ngModel)]="name" mdInput placeholder="add" name="addNew">
        </md-input-container>
        <button type="submit" md-icon-button>
            <i class="material-icons">send</i>
        </button>
    </form>
    

    我的猜测是您提交了 2 次表单。

    【讨论】:

    • 嗯,你是对的,但在更改按钮类型后,我仍然得到 [object Object]
    • 在什么?输入还是你的播放器?
    • 无论如何,使用我的代码,你的问题就会解决。这里的问题是您的方法 addItem 要求一个参数,您称之为名称。但是在您的 html 中,您发送 item !要么删除参数并按照我写的那样做,要么发送名称而不是项目。在这两种情况下,您都不会再遇到问题了。
    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 2017-01-24
    • 2017-05-29
    • 1970-01-01
    • 2017-10-31
    • 2020-08-28
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多