How to convert Observable<any> to array[]

You will need to subscribe to your observables:

    .subscribe(countries => {
        this.myGridOptions.rowData = countries as CountryData[]

And, in your html, wherever needed, you can pass the async pipe to it.

Using HttpClient (Http's replacement) in Angular 4.3+, the entire mapping/casting process is made simpler/eliminated.

Using your CountryData class, you would define a service method like this:

getCountries()  {
  return this.httpClient.get<CountryData[]>('');

Then when you need it, define an array like this:

countries:CountryData[] = [];

and subscribe to it like this:

this.countryService.getCountries().subscribe(countries => this.countries = countries);

A complete setup answer is posted here also.

This should work:

GetCountries():Observable<CountryData[]>  {
  return this.http.get(``)
    .map((res:Response) => <CountryData[]>res.json());

For this to work you will need to import the following:

import 'rxjs/add/operator/map'