【问题标题】:inputing data with angularjs 2 using services使用服务使用 angularjs 2 输入数据
【发布时间】:2016-11-02 04:31:17
【问题描述】:

所以我正在学习 angularjs 2,但在理解服务的使用以及让它与我的应用程序一起工作时遇到了困难。

电影.services.ts

   import { Injectable } from "@angular/core";

import { Film } from './film';
import { FILMS } from './mock-films';

@Injectable()
export class FilmService {
  getFilms(): Promise<Film[]> {
    return Promise.resolve(FILMS)
  }
}

模拟电影

import { Film } from './film';

//storing the data in array
export const FILMS: Film[] = [
  {id:11, title: 'pokemon', summary:'great'},
  {id:12, title: 'naruto', summary: 'good'},
  {id:13, title: 'bleach', summmary: 'meh'},
  {id:14, title: 'one piece', summary: 'not bad'}
];

电影列表.components.ts

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable'
import { FilmService } from '../film.service';
import { Film } from "../film";

@Component({
  template: `
  <h1>List of Films</h1>
  <p>Films:</p>
  <ul>
    <li *ngFor="let film of films ">
     <a [routerLink]="['/films', film.id]">{{film.title}}</a>
      </li>
  </ul>
  <p *ngIf="films.length > 3">There are many vietnamese films to learn about!</p>
`,
  // important when adding to service other crashes
  providers: [FilmService]
})

//Component class
export class FilmListComponent implements OnInit {
  public films: Film[];
  constructor(private filmService: FilmService) {}

  getFilms(){
    this.filmService.getFilms().then((films: Film[]) => this.films = films);
  }

  ngOnInit():any {
    this.getFilms()
  }
}

所以我的目标是将模拟电影中的数据添加到我的电影列表中,但由于某种原因它没有显示出来。可能是film-list.component.ts,但不确定错误在哪里。

【问题讨论】:

  • 我可以知道您遇到了什么错误吗?

标签: angular typescript service frontend


【解决方案1】:

在这里修复

  public films: Film[]=[];

public films: Film[];
  constructor(private filmService: FilmService) {}
     getFilms(){
        this.flims=[];
        this.filmService.getFilms().then((films: Film[]) => this.films = films);
      }

电影列表.components.ts

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable'
import { FilmService } from '../film.service';
import { Film } from "../film";

@Component({
  template: `
  <h1>List of Films</h1>
  <p>Films:</p>
  <ul>
    <li *ngFor="let film of films ">
     <a [routerLink]="['/films', film.id]">{{film.title}}</a>
      </li>
  </ul>
  <p *ngIf="films.length > 3">There are many vietnamese films to learn about!</p>
`,
  // important when adding to service other crashes
  providers: [FilmService]
})

//Component class
export class FilmListComponent implements OnInit {

  public films: Film[];
  constructor(private filmService: FilmService) {}

  getFilms(){

    this.flims=[];//fix in here
    this.filmService.getFilms().then((films: Film[]) => this.films = films);
  }

  ngOnInit():any {
    this.getFilms()
  }
}

【讨论】:

  • 谢谢你,它工作。你能解释一下为什么会这样吗?
  • 公开电影:Film[]=[];你需要告诉这是什么样的,例如.public flim:string="";如果你这样声明 publicfilm :Flim[] 这将是未定义的并给你错误。
猜你喜欢
  • 2014-11-07
  • 2014-09-12
  • 1970-01-01
  • 2015-10-07
  • 2018-10-10
  • 2011-08-28
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
相关资源
最近更新 更多