猿问

间隔Angular2 + http

我对angular和rxjs很陌生。我正在尝试创建一个angular2应用程序,该应用程序从静态服务的文本文件(位于服务器本地)中获取一些数据,我想使用Angular2的http提供程序和rxjs的地图在固定时间检索并映射到Datamodel interval(5000)。反映对提供的txt文件的任何更改。


有了rxjs 4.x,我知道您可以Observable.interval(5000)用来完成这项工作,但是rxjs 5中似乎并不存在。我的解决方法当前使用刷新整个应用程序来<meta http-equiv="refresh" content="5" >重新加载整个页面,从而重新加载数据。


因此,我真正想要的是某种与可观测对象进行此操作的方法,也许可以检查是否发生了任何更改。或只是重新加载数据。


任何帮助或其他/更好的方式将不胜感激。


到目前为止,我有:


@Injectable()

export class DataService {


    constructor(private http:Http){}


    getData(url) {

        return this.http.get(url)

            .map(res => {

                return res.text();

            })

            .map(res => {

                return res.split("\n");

            })

            .map(res => {

                var dataModels: DataModel[] = [];

                res.forEach(str => {

                    var s = str.split(",");

                    if(s[0] !== "") {

                        dataModels.push(new DataModel(s[0], parseInt(s[1]), parseInt(s[2])));

                    }

                });

                return dataModels;

            })

    }

}


@Component({

selector: 'my-app',

template: `Some html to display the data`,

providers: [DataService],

export class AppComponent {


data:DataModel[];


constructor(dataService:DataService) {}


ngOnInit() {

    this.dataService.getData('url').subscribe(

        res => {

            this.data= res;


        },

        err => console.log(err),

        () => console.log("Data received")

        );

    }

}

依赖项:package.json


"dependencies": {

  "angular2": "^2.0.0-beta.3",

  "bootstrap": "^4.0.0-alpha.2",

  "es6-promise": "^3.0.2",

  "es6-shim": "^0.33.13",

  "jquery": "^2.2.0",

  "reflect-metadata": "^0.1.2",

  "rxjs": "^5.0.0-beta.0",

  "systemjs": "^0.19.20",

  "zone.js": "^0.5.11"

},

"devDependencies": {

  "typescript": "^1.7.5"

}

慕村9548890
浏览 544回答 3
3回答
随时随地看视频慕课网APP

相关分类

AngularJS
我要回答