无法在Angular 4中绑定属性

时间:2017-08-19 03:38:25

标签: javascript angular data-binding angular2-services property-binding

为什么绑定同一组件的属性存在问题?我已经添加了Input()但仍然无法正常工作。我是否需要输入Input(),即使它在绑定时位于同一个组件上?

//output.component.ts
import { Component, OnInit} from '@angular/core';
import { DataService } from '../data.service';
@Component({
  selector: 'app-output',
  templateUrl: './output.component.html',
  styleUrls: ['./output.component.css']
})
export class OutputComponent implements OnInit {
data: {name: string};
datas = [];

constructor(private dataService: DataService) { }

ngOnInit(){
   this.datas = this.dataService.datas;
}
}



//output.component.html
<p *ngFor="let data of datas"></p>
<p>{{data.name}}</p>


//data.service.ts
export class DataService {
  datas= [];

  addData(name: string){
     return this.datas.push({name: name});
  } 
}

1 个答案:

答案 0 :(得分:1)

对于相同的组件@input API不是必需的。当您想要将数据从Parentcomponent传递给子组件时使用它。

//output.component.html
<p *ngFor="let data of dataService.datas" >  // removed [data]="data" and added dataService.datas
   <p>{{data?.name}}</p>
</p>                                         //changed the position of </p>


export class OutputComponent implements OnInit {
   constructor(private dataService: DataService) {}
}
export class DataService {
   datas= [];

   addData(name: string){
      return this.datas.push({name: name});   //return keyword was missing
   } 
}

仅供参考

DEMO:https://plnkr.co/edit/XlJM2LHFwlAYpQe2ancM?p=preview