Обновить представление для компонента A как обновление базы данных для компонента B

Компонент A - это боковая панель, которая отображает список категорий и запускается только один раз, поэтому использовать ngOnInit нельзя.

College
Faculty
Workshop
Time
Email

Компонент B - это компонент настройки с формой, которая при отправке обновляет имена этих категорий и сохраняет изменения в БД

В настоящее время эти имена категорий жестко запрограммированы

Хотите изменить вид компонента A как как только я обновлю компонент B.

Структура приложения

app
   |--Admin
         |--Sidebar
                  |--sidebar.component.ts
         |--Setting
                  |--setting.component.ts
         |--Layout
                  |--layout.component.ts
                  |--layout.component.html

Оба компонента принадлежат компоненту макета.

layout.component.html

   <sidebar (mouseenter)="mouseEnter()" (mouseleave) = "mouseLeave()"></sidebar>
   <router-outlet></router-outlet>

Для пути "/" - отображение выхода маршрутизатора контрольный дом
отображаемое имя администратора

Для пути "/ control-home / setting" - страница настройки отображения выхода маршрутизатора

sidebar.component.ts

import { Component} from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { Router } from '@angular/router';

@Component({

    moduleId : module.id,
    selector    : 'sidebar',    
    templateUrl : 'sidebar.component.html',
    directives  : [ ROUTER_DIRECTIVES],
})

export class SidebarComponent{
}

sidebar.component.html

<a [routerLink] = "['/control-home/setting']" class="enable-tooltip" data-placement="bottom" title="Settings" ><i class="gi gi-cogwheel"></i></a>

Компонент настроек имеет форму, которая обновляет значения и сохраняет их в БД.


person Sandeep Chikhale    schedule 16.07.2016    source источник


Ответы (1)


Просто используйте общий сервис с наблюдаемым для глобального уведомления об определенных изменениях и позвольте каждому заинтересованному компоненту действовать в соответствии с самим уведомлением.

См. https://angular.io/docs/ts/latest/cookbook/component-communication.html

person Günter Zöchbauer    schedule 16.07.2016
comment
нет входного свойства для передачи. пожалуйста, дайте мне код - person Sandeep Chikhale; 16.07.2016
comment
По ссылке содержится много кода. Что вы имеете в виду, говоря, что нет входного свойства для передачи? Observable позволяет вам уведомлять другие части вашего приложения, которые внедряют тот же экземпляр службы. - person Günter Zöchbauer; 16.07.2016
comment
Итак, если я создам общий сервис и создаю функцию, в которой наблюдаемый будет возвращать объект или массив со списком категорий, а в компоненте категории я вызову эту функцию - person Sandeep Chikhale; 16.07.2016
comment
Родитель и дети общаются через службу, это способ сделать это, потому что мои компоненты не являются родительскими и дочерними - пожалуйста, ответьте - person Sandeep Chikhale; 16.07.2016
comment
Общение через службу в основном происходит при отсутствии родительско-дочерних отношений. Для родительского-дочернего вы можете просто использовать привязки типа [childProp]="parentProp" или (childEvent)="doSomethingOnParent($event)" - person Günter Zöchbauer; 16.07.2016
comment
Я бы создал службу с наблюдаемым объектом, который генерирует новый массив (или объект), если значения изменяются, которые необходимо распространить. Служба может выдавать новые значения, когда другая служба, обновляющая базу данных, получает свой запрос на это успешно. Детали зависят от того, чего именно вы хотите достичь. - person Günter Zöchbauer; 16.07.2016