# Platform.ready in Provider?

**URL:** <https://forum.ionicframework.com/t/platform-ready-in-provider/63021>\
**Category:** ionic-v3\
**Created:** [September 9, 2016, 4:24pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021 "2016-09-09T16:24:58Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 9, 2016, 4:24pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/1 "2016-09-09T16:24:58Z")

</div>

How do you access Platform properties in a provider?

```
import {Platform} from 'ionic-angular';

  constructor(platform: Platform) {
    this.platform = platform;
   this.platform.ready().then(() => {
        console.log("PLATFORM READY IN PROVIDER")
    })
}

```

Results in TypeError: Cannot read property ‘ready’ of undefined

Ultimately trying to get which Platform it is to be used in the Provider/Service.

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 9, 2016, 4:48pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/2 "2016-09-09T16:48:52Z")

</div>

I guess platform variable should be defined as property in Class.Declare properly like below.

**platform: any;**

---

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 9, 2016, 5:09pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/3 "2016-09-09T17:09:02Z")

</div>

Thanks for the try but it did not work. Same results.

---

<div class="post-metadata">

**Author:** ![reedrichards](https://avatars.discourse-cdn.com/v4/letter/r/34f0e0/32.png) [@reedrichards](https://forum.ionicframework.com/u/reedrichards)\
**Post date:** [September 9, 2016, 6:12pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/4 "2016-09-09T18:12:18Z")

</div>

Maybe you couldn’t or shouldn’t?

In a provider you could not access to components like navcontroller, loadingcontroller etc. maybe it’s the same for the platform. This “force” you to have a nice separation between presentation and logic.

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 9, 2016, 6:27pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/5 "2016-09-09T18:27:31Z")

</div>

Try like this

constructor(public platform: Platform) {  
platform.ready().then(() =\> {  
// Okay, so the platform is ready and our plugins are available.  
// Here you can do any higher level native things you might need.  
console.log(“Platform is ready”);  
});  
}

---

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 9, 2016, 6:31pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/6 "2016-09-09T18:31:29Z")

</div>

@ Sathyesh: Still no luck. Same results. Thanks for the try though.  
@reedrichards: May be.

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 9, 2016, 6:49pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/7 "2016-09-09T18:49:18Z")

</div>

Can you please post your complete provider code? Actually its working for me in provider.

---

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 12, 2016, 4:04pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/8 "2016-09-12T16:04:54Z")

</div>

Hi Sathyesh.  
I made a duplicate of my service and removed portions of it until it worked.  
The following was the problem:

```
static get parameters() {
return [[Http]];
  }

```

With that in the Provider, the Platform.ready was not working.  
However, without that in there, I now get an error: ORIGINAL EXCEPTION: No provider for NavController!

Here is the provider:  
import {Page, NavController, Platform} from ‘ionic-angular’;  
import {Injectable, Component} from ‘@angular/core’;  
import {Http} from ‘@angular/http’;

```
@Injectable()
export class Test {
 // static get parameters() {
        //return [[Http]];
    //}
  constructor(public nav: NavController, public platform: Platform) {
    platform.ready().then(() => {
      console.log("Platform is ready");
    });
  }

}

```

Unless you have any thoughts, I might need to create a new post on how to use the Platform.ready AND NavController / static get parameters

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 12, 2016, 6:37pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/9 "2016-09-12T18:37:03Z")

</div>

Hi ,

I have prepared sample service like yours,its working fine for me(see below).

One more question is that,why would you need navcontroller in service file?What’s the purpose?

```
import 'rxjs/add/operator/map';
import { NavController, Platform} from 'ionic-angular';
import { Injectable } from '@angular/core';
import {Http} from '@angular/http';

@Injectable()
export class MovieService {

	constructor(private http:Http,public platform:Platform,public nav: NavController) {

      platform.ready().then(() => {
         console.log("Platform is ready");
       });

	}

    searchMovies(movieName) {
        var url = 'http://api.themoviedb.org/3/search/movie?query=&query=' + encodeURI(movieName) + '&api_key=5fbddf6b517048e25bc3ac1bbeafb919';
        var response = this.http.get(url).map(res => res.json());
		return response;
    }
}
```

---

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 12, 2016, 6:58pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/10 "2016-09-12T18:58:57Z")

</div>

Ok, I tried it exactly except for name change of provider. Same errors:  
EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in ./MyApp class MyApp\_Host - inline template:0:0  
ORIGINAL EXCEPTION: No provider for NavController!  
ORIGINAL STACKTRACE:  
Error: DI Exception  
at NoProviderError.BaseException [as constructor] ([http://localhost:8100/build/js/app.bundle.js:2868:23](http://localhost:8100/build/js/app.bundle.js:2868:23))  
at NoProviderError.AbstractProviderError [as constructor] ([http://localhost:8100/build/js/app.bundle.js:29524:16](http://localhost:8100/build/js/app.bundle.js:29524:16))  
at new NoProviderError ([http://localhost:8100/build/js/app.bundle.js:29561:16](http://localhost:8100/build/js/app.bundle.js:29561:16))  
at ReflectiveInjector\_._throwOrNull ([http://localhost:8100/build/js/app.bundle.js:30558:19](http://localhost:8100/build/js/app.bundle.js:30558:19))  
at ReflectiveInjector_._getByKeyDefault ([http://localhost:8100/build/js/app.bundle.js:30586:25](http://localhost:8100/build/js/app.bundle.js:30586:25))  
at ReflectiveInjector_._getByKey ([http://localhost:8100/build/js/app.bundle.js:30549:25](http://localhost:8100/build/js/app.bundle.js:30549:25))  
at ReflectiveInjector_.get ([http://localhost:8100/build/js/app.bundle.js:30358:21](http://localhost:8100/build/js/app.bundle.js:30358:21))  
at ElementInjector.get ([http://localhost:8100/build/js/app.bundle.js:32129:48](http://localhost:8100/build/js/app.bundle.js:32129:48))  
at ElementInjector.get ([http://localhost:8100/build/js/app.bundle.js:32129:48](http://localhost:8100/build/js/app.bundle.js:32129:48))  
at DebugAppView.get (MyApp.template.js:25:163)  
ERROR CONTEXT:  
[object Object]

System info:  
Cordova CLI: 6.1.1  
Gulp version: CLI version 3.9.0  
Gulp local: Local version 3.9.1  
Ionic Framework Version: 2.0.0-beta.11  
Ionic CLI Version: 2.0.0-beta.37  
Ionic App Lib Version: 2.0.0-beta.20  
OS:  
Node Version: v6.3.1

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 12, 2016, 7:12pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/11 "2016-09-12T19:12:47Z")

</div>

Please update the environment settings(type ionic info in terminal) of your App.

---

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 12, 2016, 7:13pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/12 "2016-09-12T19:13:46Z")

</div>

Cordova CLI: 6.1.1  
Gulp version: CLI version 3.9.0  
Gulp local: Local version 3.9.1  
Ionic Framework Version: 2.0.0-beta.11  
Ionic CLI Version: 2.0.0-beta.37  
Ionic App Lib Version: 2.0.0-beta.20  
OS:  
Node Version: v6.3.1

May I see yours as well.

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 12, 2016, 7:22pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/13 "2016-09-12T19:22:04Z")

</div>

Cordova CLI: 5.4.1  
Ionic Framework Version: 2.0.0-beta.11  
Ionic CLI Version: 2.0.0-beta.37  
Ionic App Lib Version: 2.0.0-beta.20  
ios-deploy version: Not installed  
ios-sim version: Not installed  
OS: Mac OS X Yosemite  
Node Version: v6.5.0  
Xcode version: Not installed

---

<div class="post-metadata">

**Author:** ![Sathyesh](https://avatars.discourse-cdn.com/v4/letter/s/ebca7d/32.png) [@Sathyesh](https://forum.ionicframework.com/u/Sathyesh)\
**Post date:** [September 12, 2016, 7:23pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/14 "2016-09-12T19:23:50Z")

</div>

> <https://stackoverflow.com/questions/38121961/ionic-2-exception-no-provider-for-navcontroller>

> [@Why can't I import NavController and ViewController into Service or App?](https://forum.ionicframework.com/t/why-cant-i-import-navcontroller-and-viewcontroller-into-service-or-app/40999):
>
> I’m attempting to inject NavController and ViewController into either my app.js file or a custom service. My objective is (or was) to pass the current view into a “LeftMenuManager” service class. Some pages I need the leftmenu to be disabled, others I do not. The LeftMenuManager service would be responsible for flipping the switch based on the view name. However, I’m unable to inject these dependencies - I get an error about “No provider for NavController…”. I get the sense that I’m doing som…

---

<div class="post-metadata">

**Author:** ![shepard](https://avatars.discourse-cdn.com/v4/letter/s/f14d63/32.png) [@shepard](https://forum.ionicframework.com/u/shepard)\
**Post date:** [September 12, 2016, 7:32pm UTC](https://forum.ionicframework.com/t/platform-ready-in-provider/63021/15 "2016-09-12T19:32:58Z")

</div>

Thanks for that. There a few options I will try including getActiveNav()  
I will also consider not using it at all  
That said, you did not get the error when you tried?  
I am gone now for most of the day - thanks again!
