splunk splunk - 3 months ago 372
TypeScript Question

Property 'x' is private and only accessible within class 'y'

I have this piece of code:

import { Component } from '@angular/core';
import { NavController, Loading, Alert } from 'ionic-angular';

@Component({
templateUrl: 'build/pages/search/search.html',
})

export class SearchPage {
constructor (....)
{
// code here
}

findItems()
{
let loading = Loading.create({
content: "Finding items..."
});

this.nav.present(loading);
// other stuff here
}


When I run
ionic serve
everything shows correctly but when I click a button which calls
findItems()
method I get this error:

Error TS2341: Property 'create' is private and only accessible within class 'Loading


An analogous errors appears if I do:

let alert = Alert.create({
title: 'Hello!',
});


In this case in my terminal appears following message:
Error TS2341: Property 'create' is private and only accessible within class 'Alert'.


I'm working with Ionic2 version 2.0.0-beta.36

Answer

EDIT: This only applies to beta 11 and higher

This is because create is a private function of the class Loading, and therefore not callable outside of the Loading class.

The code example from Ionic's documentation shows a LoadingController class used to instantiate the Loading object with the desired options. I would start there.

import { LoadingController }  from 'ionic-angular';

//...

constructor(private loadingController: LoadingController) {

}

findItems() {
  let loading = this.loadingController.create({
  content: "Finding items..."
  duration: 3000
  });

  loading.present();
  // other stuff here
}