2016-09-19 2 views
-3
items.component.ts 

    import {Component, OnInit} from '@angular/core'; 
    import {Item} from './Item'; 
    import {ItemService} from "./item.service"; 
    import {Router} from "@angular/router"; 

    @Component({ 
     moduleId: module.id, 
     selector: 'my-items', 
     templateUrl: 'template/items.component.html', 
     styleUrls: ['template/items.component.css'] 
    }) 
    export class ItemsComponent implements OnInit { 
     errorMessage: string; 
     title = 'Hero Tour'; 
     items: Item[]; 
     selectedItem: Item; 

     constructor(private router: Router, private itemservice: ItemService) { 

     } 

     onSelect(item: Item) { 
     this.selectedItem = item; 
     } 

     ngOnInit() { 
     this.itemservice.getItems().subscribe(items=>this.items = items); 
     //if not comment this can call api add new item and push it into array 
     //this.itemservice.create('Test Add').subscribe((item:Item)=>this.items.push(item)); 
     } 

     goDetail(): void { 
     let link = ['/detail', this.selectedItem.ItemId]; 
     this.router.navigate(link); 
     } 

     addItem(name: string): void { 
     name = name.trim(); 
     if (!name) { 
      return; 
     } 

     this.itemservice.create(name).subscribe(
      (item: Item) => this.items.push(item), 
      (error: any) => { 
      this.errorMessage = <any>error; 
      console.log(this.errorMessage); 
      console.log('xxxxxxxxxxxxxxxx'); 
      this.router.navigate(['/items']) 
      }, 
     ()=>this.router.navigate(['/items']) 
     ); 


     } 

    } 


items.component.html 
    <div> 
     <label>Item Name:</label><input #itemNane> 
     <button (click)="addItem(itemNane.value); itemNane.value=''">Add</button> 
    </div> 
    <h2>My Items</h2> 
    <ul class="heroes"> 
     <li *ngFor="let item of items" [class.selected]="item===selectedItem" (click)="onSelect(item)"> 
     <span class="badge">{{item.ItemId}}</span>{{item.ItemName}} 
     </li> 
    </ul> 
    <div *ngIf="selectedItem"> 
     <h2>{{selectedItem.ItemName | uppercase}} is my item</h2> 
     <button (click)="goDetail()">View Details</button> 
    </div> 

wenn in ngOnInit() verwenden,
this.itemservice.create ('Test Add') abonnieren ((Pos. Artikel) => this.items.push (Artikel)
kann ein neues Objekt web api hinzufügen rufen
dem Namen „Test hinzufügen“, aber wenn ich auf hinzufügen Schaltfläche
die Anfrage Anzeige auf firefox Konsole, aber Server diese Anforderung empfangen, dann umleiten zu indizieren firefox console log errorWinkel 2 http-Request-Statuscode 0

+0

Wenn Sie Code aus' ngOnInit' auskommentieren, trifft dies auf API? – micronyks

+0

Code aus ngOnInit auskommentieren, Web API aufrufen, neues Element hinzufügen und in Array schieben, Array auch durch API bekommen – yiji

Antwort

0

wenn Ich füge Typ Attribut Fehler ist behoben < button type = "button" (click) = "addItem (itemNane.value); itemNane.value = '' "> Hinzufügen </button>