2017-02-22 15 views
0

У меня есть компонент, который имеет переменную Mynameвида не обновляется при изменении значения переменного класса angular2

export class ConversationComponent implements OnInit { 
    private myName: string; 

    showNames(name) 
    { 
    this.myName=name; 
    } 
} 

значение устанавливается с помощью showNames(), и он отображается

<h4>{{MyName}} </h4> 

, но когда значение устанавливается на переменную, изменение не отражается в представлении, то есть на странице html.

Вот моя служба:

import { Injectable } from '@angular/core'; 
import { ConversationComponent } from './conversation/conversation.component'; 

@Injectable() export class ChatingService { 

    constructor(private Conversation:ConversationComponent) { } 

    setValue(val) { 
    this.Conversation.showNames(this.myValue); 
    } 
} 
+1

Создайте плункер, который генерирует проблему, о которой вы упоминали. – ranakrunal9

+1

Где вы называете 'showNames (...)'? – Vusal

+0

это звонок из службы .. –

ответ

0

Попробуйте это:

@Component(...) 
export class ConversationComponent implements OnInit { 
    private myName: string; 

    constructor(private service:ServiceClass) {} 

    ngOnInit() { 
    this.showNames(this.service.getName()); 
    } 

    showNames(name) { 
    this.myName=name; 
    } 
} 

Здесь ServiceClass ваш инъекционный Service.

+0

в моем проекте при загрузке в переменной не будет никакого значения, значение которого задается при нажатии кнопки на другом компоненте на моей странице, поэтому я не могу использовать ngOnInit() –

+0

[Здесь] (https://gist.github.com/sasxa/e1164d9773b31459f6dc) является сутью, которая демонстрирует связь между компонентами сестры через сервис. Вы можете это рассмотреть. Но если ваши компоненты вложены, тогда лучше будет общаться с помощью событий и обратного вызова между родителем и дочерним. – Vusal

1

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