如何从Angular 6中的另一个组件的打字稿中激活和停用组件中的样式?

时间:2018-11-15 08:03:06

标签: html css angular typescript angular6

我的app.component.ts

this.renderer.listenGlobal('window', 'scroll', (event) => {
            const number = window.scrollY;
            if ((number > 150 || window.pageYOffset > 150) && this.location.prepareExternalUrl(this.location.path()) == '/') {
                // I want to activate here style .nav-item .nav-link:not(.btn) in navbar.component.html
                navbar.classList.remove('navbar-transparent');
            } else {
                // I want to deactivate here style .nav-item .nav-link:not(.btn) in navbar.component.html
                navbar.classList.add('navbar-transparent');
            }
        });

navbar.component.html中,我有

<li class="nav-item" *ngIf="!isDocumentation() && !isMain() && !isCloud() && !isView()">
          <a class="nav-link" rel="tooltip" title="Follow us on Twitter" data-placement="bottom"
             href="https://example-link.com" target="_blank">
            <i class="fa fa-twitter"></i>
            <p class="d-lg-none">Twitter</p>
          </a>
        </li>

我想自动从navbar.component.scss激活和停用样式

  .nav-item .nav-link:not(.btn){
      color: black;
      border-color: black;
  }

app.component.ts在这个地方

        // I want to activate here style .nav-item .nav-link:not(.btn) in navbar.component.html
        navbar.classList.remove('navbar-transparent');
    } else {
        // I want to deactivate here style .nav-item .nav-link:not(.btn) in navbar.component.html
        navbar.classList.add('navbar-transparent');
    }

有什么主意我该怎么做?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是ngClass。

在html中:

$.getJSON('https://api.iextrading.com/1.0/stock/market/batch?symbols=aapl&types=quote', function(data) {
       console.log(data);
  });

这将是在布尔值为true时添加样式,而在布尔值为false时将其删除。如果使用的是父子结构,则可以使用@Input或@Output设置布尔值。否则,您可以使用共享服务。

来源:https://angular.io/api/common/NgClass https://angular.io/guide/component-interaction