Я довольно плохо знаком с angular и rxjs. Я пытаюсь создать приложение angular2, которое получает некоторые данные из статически обслуживаемого текстового файла (локально на сервере), который я хотел бы получить и отобразить на Datamodel с помощью http-провайдера Angular2 и карты rxjs через фиксированный interval(5000)
. Чтобы отразить любые изменения в обслуживаемом текстовом файле.
В 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"
}
index.html import:
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<script src="node_modules/angular2/bundles/http.dev.js"></script>