2016-10-21 4 views
0

Это мой app.component.htmlAngular2 - добавление [_nghost-ххх-N] и [_ngcontent-ххх-N] путает мой код

<header> 
    <cm-main-navigation></cm-main-navigation> 
</header> 
<router-outlet></router-outlet> 
<footer> 
    <cm-footer></cm-footer> 
</footer> 

Каждая страница моего приложения, очевидно, появляется после router- выход.

Мой КСС:

:host { 
    display: flex; 
    height: 100%; 
    flex-direction: column; 

    & > * { 
     flex: 1 0 auto; 
    } 

    header, 
    router-outlet, 
    footer { 
     flex: 0 0 auto; 
    } 

} 

&> * предполагается цель каждой страницы, генерируемый маршрутизатором-выходом, но из-за ngcontent-ххх-N он никогда не будет применяться:

[_nghost-ray-1] > *[_ngcontent-ray-1] { 
    -webkit-flex: 1 0 auto; 
    -ms-flex: 1 0 auto; 
    flex: 1 0 auto; 
} 

Это потому, что каждая страница динамически генерируется из маршрутизатора-выхода, каждый раз добавляет другой префикс, и таблица стилей не обновляется соответствующим образом.

Фактически, проверка моего корневого элемента страницы css не появляется. Здесь я получил его от других элементов, таких как заголовок, где он пришел вместе с:

[_nghost-ray-1] footer[_ngcontent-ray-1], [_nghost-ray-1] header[_ngcontent-ray-1], [_nghost-ray-1] router-outlet[_ngcontent-ray-1] { 
    -webkit-flex: 0 0 auto; 
    -ms-flex: 0 0 auto; 
    flex: 0 0 auto; 
} 

this is css of router-outlet, footer and header

Это работает некоторую Угловые 2 версии назад, но он перестал работать некоторые патчи назад.

Итак, мой вопрос: как настроить таргетинг на любые дочерние узлы хоста, которые могут динамически меняться? Я не хочу менять настройку тени.

Нет таких CSS появляются здесь:

There is no such css for the pages

мне это не похоже на ошибку. Это правильный CSS, который обычно работает, это Angular 2, нарушающий его.

Вот как это должно быть:

[_nghost-ray-1] > * { 
    -webkit-flex: 1 0 auto; 
    -ms-flex: 1 0 auto; 
    flex: 1 0 auto; 
} 

ответ

0

Вам придется использовать специальный селектор /deep/.

https://angular.io/docs/ts/latest/guide/component-styles.html#!#-deep-

Итак:

:host /deep/ > * { 
    flex: 1 0 auto;  
} 
+0

Я знал об/глубоко /, но это должно быть стилей компонента детей от родителей, как же это необходимо для динамически генерируемого содержимого? Я могу создать дочерний компонент «: host element» также из родителя, и я должен быть в состоянии сделать это со «страницей». Это работает, но логика того, как это должно быть в порядке, все равно уклоняется от меня. – Kunepro

+0

Дело в том, что '' сам по себе является дочерним компонентом. Ваши страницы не являются прямыми дочерними элементами вашего «AppComponent», они являются дочерними элементами «RouterOutlet», что делает их недоступными для родителя без селектора '/ deep /'. – titoeuf