I want the user to click on a button and that the page is reloaded how do i do so.
Please elaborate on what you think “reloading a page” constitutes.
when i want data from an api to be fetched again
<button ion-button (click)="fetchDataFromApi()">
i have organise my work under the app folder and i have created three other folders
1 components
2 services
3 interfaces
sk3-news.components.html
<div *ngIf="!isErr && newsResults" id="content">
<p *ngIf="first" id="p-sk3">{{newsResults.category}} News</p>
<div *ngFor="let site of newsResults.sites | slice:0:10; let i = index">
<div *ngIf="site.articles && site.articles.length" class="ion-card">
<div class="ion-card-content" *ngFor="let article of site.articles | slice:0:3; let j = index">
<a (click)="articleSelected(site.url, article)" target="_blank" title="{{article.text}}" class="TAj VAm tdu clk">
<div *ngIf="article.img_url!==''" class="lat max1o2 TAc VAm ns">
<img id="img_{{article.uank}}" src="{{article.img_url}}" class="news_imgs ip6 TAc VAm">
</div>
<p class="psk3" (click)="articleSelected(site.url, article)">{{article.text}}</p>
</a>
<span id="age_{{article.uank}}" class="dgry_fgc f90 TAl VAm" in-view="$inview && fnSetInViewAge(article.logtime)" sk3-in-view-age></span>
<hr class="hr">
</div>
<div class="vlgry_bgc TAc">
<span class="ntdu_hover blkf90 b wrap">
<i class="site" title="Get more from {{site.label}}" (click)="siteSelected(site.url, article)">
{{site.label}}
<span class="f80 blk TAc">({{site.articles.length}} items)</span>
</i>
</span>
</div>
</div>
<!-- #whtbox_shad4 -->
</div>
</div>
<div *ngIf="isErr">
<p name="ios-alert" class="err xip8"> {{errMessage}} </p>
</div>
sk3-news.components.ts
import { Component } from '@angular/core';
import { Http } from '@angular/http'
import { NavController } from 'ionic-angular';
import { DetailPage } from '../../../pages/detail/detail';
import { Sk3NewsCategory } from '../../interfaces/sk3-news/sk3-news-category.interface';
import { Sk3NewsService } from '../../services/sk3-news/sk3-news.service';
import { HeadlinesPage } from '../../../pages/headlines/headlines'
@Component({
selector: 'sk3-news',
templateUrl: './sk3-news.component.html'
})
export class Sk3NewsComponent{
isErr: boolean = false;
errMessage = "Oops! The connection boobooed. Try again later.";
newsResults: Sk3NewsCategory;
sitesPerCategory: number = 10;
articlesPerSite: number = 3;
timestamp: number = 0;
constructor(public http: Http, public sk3newsservice: Sk3NewsService, public navCtrl: NavController) {
this.sk3newsservice.getSk3News().subscribe(
data => {
this.newsResults = data.d;
console.log(this.newsResults);
},
err => {
console.log(this.errMessage);
}
);
}
articleSelected(siteurl, article) {
this.navCtrl.push(DetailPage, {
siteurl: siteurl,
article: article
});
};
siteSelected(siteurl, article) {
this.navCtrl.push(HeadlinesPage, {
siteurl: siteurl,
article: article
});
};
}
sk3-news.services.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Sk3NewsCategory } from '../../interfaces/sk3-news/sk3-news-category.interface';
@Injectable()
export class Sk3NewsService {
newsData: Sk3NewsCategory[];
constructor(public http: Http) {
}
getSk3News() {
return this.http.get("https://soko360.com/io/dev/v1?opt=news&category=Local&format=json&r=" + Math.random())
.map(res => res.json());
}
}
help me now… if possible
Move what you are doing in the component’s constructor to a method and call that when the button is pressed.
where will the method be