Вкладка «Угловой материал» не выбрана, если приложение не загружено по умолчанию - PullRequest
0 голосов
/ 14 ноября 2018

В этом примере по умолчанию выбрана вкладка «Поднятая кнопка»

https://stackblitz.com/edit/angular-material?file=index.html

При изменении HTML-кода для загрузки приложения после нажатия кнопки вкладка по умолчанию не выбирается

https://stackblitz.com/edit/angular-material-smmas7?file=index.html

Могу ли я внести в приложение изменения, чтобы вкладка была выбрана по умолчанию, даже если приложение загружается после нажатия кнопки?

1 Ответ

0 голосов
/ 14 ноября 2018

Технически приложение / компонент уже загружен, вы только скрываете его ... поэтому вы не загружаете компонент нажатием кнопки, а только позволяете просмотреть его нажатием кнопки.

  • Если вы реализуете OnInit в своем классе и ведете консольный журнал, вы увидите, что компонент был инициализирован еще до того, как вы нажмете кнопку.

    export class AppComponent implements OnInit
    
    ngOnInit(){
      console.log('AppComponent Initialized');
    }
    

Затем, если вы добавитеconsole.log(document.activeElement); в вашем методе show в index.html вы увидите, что ваша кнопка на самом деле все еще имеет фокус после нажатия;По этой причине ваш компонент не получает фокус и, в конечном итоге, чернильная полоса не отображается ...

  • Элемент вне вашего компонента имеет фокус на index.htmlуровень и из-за того, как вы экспонируете вид вашего компонента не угловым образом, он воздействует на компонент.

    function show()
      {
        document.getElementById("foo").style.display = "block";
        console.log(document.activeElement);
      }
    

Результат приводит к следующему выводу через консоль, когда кнопкащелчок показывает, что кнопка имеет фокус.

 <input type="button" value="Click" onclick="show()">

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...