2017-02-16 9 views
1

У меня есть сервис:поле вопрос Angular2 Службы

@Injectable() 
export class MyService implements IMyService { 
    myServiceArray: Array<string> = ["hi", "hello", "yoyo"]; 
} 

Эта услуга вводится в компонент, который обновляет массив строки с ngModel. Когда я пытаюсь напечатать массив из Компонента или из Сервиса, все работает нормально (иначе массив обновляется с помощью ngModel).

Я также @Inject такая служба в другой 1.

@Injectable() 
export class AnotherService implements IAnotherService { 

    constructor(public myService: MyService) { 
    } 

    printValues() { 
    console.log(this.myService.myServiceArray); 
    } 
} 

Когда я называю printValues ​​(), [ «привет», «привет», «йойо»] печатается, даже если я обновил значения массив с моделью!

Что я делаю неправильно?

РЕДАКТИРОВАТЬ:

Код компонента состоит в следующем.

@Component({ 
    selector: 'app-root', 
    providers: [MyService], 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 

export class AppCustomerData implements IAppCustomerData { 

    constructor(public myService: MyService) { 
    } 
} 
+2

Где вы предоставляете услугу ('@Component()' или '@NgModel()')? –

+0

Я поместил код компонента. [[NgModel]] = '...' находится в шаблоне url компонента. – Nano

ответ

2

Вы должны смотреть, что Вы вводите тот же экземпляр службы, если у вас есть несколько экземпляров службы каждый из них имеет собственный массив в нем.

Я хотел бы попробовать использовать локальное хранилище для хранения данных в службе, чем вы можете иметь несколько экземпляров, и каждый из них может изменить или вернуть то же значение: How to store token in Local or Session Storage in Angular 2?

Может быть, это отвечает на ваши проблемы: How do I create a singleton service in Angular 2?

+0

OMG вы правы! Я фактически создаю больше экземпляров одного и того же сервиса. Есть ли способ сделать синглтон? – Nano

+0

См. Ссылку, которую я добавил в свой пост. – patrick

+0

Спасибо, ты написали именно то, что мне нужно! – Nano