Я совершенно новичок в angular и rxjs. Я пытаюсь создать приложение angular2, которое получает некоторые данные из статически обслуживаемого текстового файла (локально на сервере), которые я хотел бы получить и сопоставить с моделью данных, используя 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 импортирует:
<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>