2016-06-30 2 views
0

Я хочу иметь доступ к sidenav, определенному в * .component.html, чтобы я мог динамически управлять его свойствами (поверх | push | side), такими как ширина экрана.Access Angular2 Материал sidenav в компоненте

Как получить доступ к мкр-sidenav ниже

<div class='layout-header'> 
    <md-sidenav-layout fullscreen> 
    <md-sidenav mode="side" #sidenav> 
     <md-nav-list> 
     <md-list-item>Blah</md-list-item> 
     </md-nav-list> 
    </md-sidenav> 
    ... 
</div> 

из его компонент, определенный в * .component.ts?

@Component({ 
    selector: 'layout-header', 
    templateUrl: './header.component.html', 
    styleUrls: ['./header.component.css'], 
    directives: [ 
    MD_SIDENAV_DIRECTIVES, 
    MD_LIST_DIRECTIVES, 
    MD_CARD_DIRECTIVES, 
    MdToolbar, 
    MdButton, 
    MdInput, 
    MdCheckbox, 
    MdRadioGroup, 
    MdRadioButton, 
    MdIcon 
    ], 
    providers: [] 
}) 
export class HeaderComponent { 

} 

Я в настоящее время

ответ

0

Вы можете попробовать атрибут связывания:

<md-sidenav [attr.mode]="sidenavMode" #sidenav> 

А в компоненте у вас есть переменная-член можно установить:

export class HeaderComponent { 
    sidenavMode: string = 'side'; 
} 
+0

Это работало? Любопытно ... довольно круто, чтобы дать пользователю контроль над этим – Spock

+0

Кто знает ... Иногда люди не самые благодарные ... однако это должно сработать так: D – rinukkusu

+0

Да, в любом случае, я не мог его достать работа, поэтому мне пришлось разрешить решение, которое я разместил выше – Spock

0

Ok, вам необходимо связать свойство компонента следующим образом:

<md-sidenav [mode]="{{sidenavMode}}" #sidenav> 
+0

Если вы привязываетесь к атрибуту с '[attribute]', вам не нужно интерполировать переменную с помощью '{{}}'. – rinukkusu

+0

Однако это не сработало для меня - вы на самом деле пробовали это самостоятельно? – Spock