Reputation: 15702
reflective_provider.js:240 Uncaught Cannot resolve all parameters for 'NavService'(?). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'NavService' is decorated with Injectable.
import {Injector, Injectable} from '@angular/core'
import {NavParams, NavController, ViewController} from 'ionic-angular'
import {IdentityPage} from '../../../pages/transaction/identity/identity';
import {AddressPage} from '../../../pages/transaction/address/address';
import {PersonalInfoPage} from '../../../pages/transaction/personal-info/personal-info';
import {PaymentDetailsPage} from '../../../pages/transaction/payment-details/payment-details';
@Injectable()
export class NavService {
private identityPage = IdentityPage
private personalInfoPage = PersonalInfoPage
private paymentDetailsPage = PaymentDetailsPage
private addressPage = AddressPage
constructor (
private _pagesToLoad = []
) {}
public lookAround(currentPage){
let prvIndex = this._pagesToLoad.indexOf(currentPage)-1
let nxtIndex = this._pagesToLoad.indexOf(currentPage)+1
let neighboursTuple = {
prvIndex: this._pagesToLoad[prvIndex],
nxtIndex: this._pagesToLoad[nxtIndex]
}
return neighboursTuple
}
}
import {NavService} from '../../../providers/services/nav-service/nav-service';
import {OnInit, AfterViewInit, ViewChildren, ContentChild} from '@angular/core'
import {TranslateService, TranslatePipe} from 'ng2-translate/ng2-translate'
import {NavParams, NavController, ViewController, Events, MenuController, Nav, Slides} from 'ionic-angular'
import {ControlGroup, FormBuilder, Validators} from '@angular/common'
import {Component, ViewChild, Directive, ElementRef, Input, DynamicComponentLoader, Injector,provide} from '@angular/core'
@Component({
templateUrl: 'build/pages/transaction/personal-info/personal-info.html'
providers: [NavService]
})
export class PersonalInfoPage {
infoForm: ControlGroup
constructor (
public formBuilder: FormBuilder,
private authService: AuthService,
private navService: NavService,
private navController: NavController,
private viewController: ViewController
) { ...
I cant see whats wrong here?
describe('NavService', () => {
it ('should have instantiated nav service with List of Pages and receive neighbours', () => {
let navService = new NavService([PersonalInfoPage,AddressPage,IdentityPage,PaymentDetailsPage])
let ResultNeighboursTuple = navService.lookAround(AddressPage)
expect(ResultNeighboursTuple.prvIndex).toEqual((PersonalInfoPage))
expect(ResultNeighboursTuple.nxtIndex).toEqual((IdentityPage))
})
Upvotes: 0
Views: 213
Reputation: 15702
Turns out my test caused the error, just make sure you provide in the test before injecting, as in here:
describe('Service: LanguagesService', () => {
let service;
//setup
beforeEachProviders(() => [
LanguagesService
]);
beforeEach(inject([LanguagesService], s => {
service = s;
}));
//specs
it('should return available languages', () => {
let languages = service.get();
expect(languages).toContain('en');
expect(languages).toContain('es');
expect(languages).toContain('fr');
expect(languages.length).toEqual(3);
});
})
https://gist.github.com/gsans/cd72e5b0f5302bc9dbc8#file-languagesservice-spec-js
Upvotes: 0
Reputation: 55443
export class NavService {
private identityPage = IdentityPage
private personalInfoPage = PersonalInfoPage
private paymentDetailsPage = PaymentDetailsPage
private addressPage = AddressPage;
private _pagesToLoad = [];
constructor (
// private _pagesToLoad = [] <---- put it out side of constructor
) {}
public lookAround(currentPage){
let prvIndex = this._pagesToLoad.indexOf(currentPage)-1
let nxtIndex = this._pagesToLoad.indexOf(currentPage)+1
let neighboursTuple = {
prvIndex: this._pagesToLoad[prvIndex],
nxtIndex: this._pagesToLoad[nxtIndex]
}
return neighboursTuple
}
}
Upvotes: 1