2017-07-02 100 views
-1

我想通过push方法更新数组,并在视图中显示数组。我无法将其显示在视图上。我从文本框中获得新的值,并试图在视图中显示。请让我知道我在这里做错了什么?我得到的是空行(上图),没有从文本框的值,下面是HTMLIonic/Angular 2:点击添加新项目后显示数组值

<ion-row> 
    <ion-col col-12 text-left> 
     <div class="talk-bubble tri-left border"> 
     <p class="talktext">Hello, are you there? 
     </p> 
     </div> 
    </ion-col> 
    </ion-row> 
    <ion-row *ngFor="let m of messages"> 
    <ion-col col-12 text-left> 
    <div class="talk-bubble tri-left border"> 
     <p class="talktext">{{m.message}}</p> 
    </div> 
    </ion-col> 
    </ion-row> 


</ion-content> 
<ion-footer> 
    <ion-toolbar> 
    <form [formGroup]="chatForm" (ngSubmit)="onSubmit(chatForm.value,chatValue)"> 
     <ion-row> 
     <ion-col col-10> 
      <input type="text" [formControl]="chatText" [(ngModel)]="chatValue" class="message-text" placeholder="Message.." /> 
     </ion-col> 
     <ion-col col-2 align-items-left> 
      <button type="submit" [disabled]="!chatForm.valid"><ion-icon name="send"></ion-icon></button> 
     </ion-col> 
     </ion-row> 
    </form> 
    </ion-toolbar> 

</ion-footer> 

下面是TS:

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { ProfilePage } from '../profile/profile'; 
import { ActionSheetController } from 'ionic-angular'; 
import {FormBuilder, FormGroup, Validators, AbstractControl} from '@angular/forms'; 
@Component({ 
    selector: 'page-userchat', 
    templateUrl: 'userchat.html' 
}) 
export class UserChatPage { 
    chatForm : FormGroup; 
    chatValue : string; 
    chatText : AbstractControl; 
    messages = []; 
    constructor(public navCtrl: NavController,public actionSheetCtrl : ActionSheetController, private fb : FormBuilder) { 
    this.chatForm = fb.group({ 
     'chatText':['',Validators.compose([Validators.required])], 
    }) 
    this.chatText = this.chatForm.controls['chatText'] 

    } 
    navProfilePage(){ 
    this.navCtrl.push(ProfilePage); 
    } 
userChatPage(chatID){ 
console.log(chatID); 
} 

presentActionSheet(){ 
    let actionSheet = this.actionSheetCtrl.create({ 
    title:'Chat Options', 
    buttons:[ 
     { 
     text:'Clear chat', 
     icon : 'close', 
     handler:() =>{ 

     } 
     }, 
     { 
     text:'Email me this conversation', 
     icon:'mail' 
     }, 
     { 
     text:'Cancel', 
     role:'cancel', 
     icon:'close-circle' 
     } 

    ] 
    }); 
    actionSheet.present(); 


} 
onSubmit(value:string,chatValue:string): void { 
    this.messages.push([{"message":this.chatValue}]) 
    //this.messages = this.messages.slice(); 
    //console.log(this.chatValue); 
    this.chatValue = null; 
    console.log(this.messages) 
    } 
} 

回答

0

我得到的是什么问题.. 我传递的是一个对象而不是字符串。

这是错误的this.messages.push([{"message":this.chatValue}]) 应该是this.messages.push({"message":this.chatValue})

欢呼:)