2017-12-19 3 views
0

url1 ? class1 : class2을 어떻게 구현합니까? ngClass?현재 URL을 기반으로 한 조건부 클래스

ADDED : 기본적으로

, 나는 현재의 URL을 얻을 요소의 조건부 ngClass에 바인딩 할 필요가 그래서는 해당 요소에 적용되는 다음 url1, class1 경우; 그렇지 않으면 class2이 적용됩니다.

답변

0

템플릿에이 방법을 사용할 수 있습니다

class MyComponent { 
    getClasses() { 
    const patterns = [ 
     { 
     pattern: /a\.com/, 
     className: 'serving-from-a', 
     }, 
     { 
     pattern: /b\.com/, 
     className: 'serving-from-b', 
     }, 
    ]; 

    return patterns 
     .filter(p => p.pattern.test(window.location)) 
     .map(p => p.className) 
     .join(' '); 
    } 
} 

을 현재 URL은 무엇입니까?

export class Component implements OnInit { 
    public url1: string = ""; 

    constructor(private router: Router) {} 

    ngOnInit() { 
     this.url1 = this.router.url; 
    } 

} 

그런 다음 [ngClass]="url1 ? 'style1' : 'style2'"은 fin해야합니다. 이자형.

은 라우터를 가져올 것을 잊지 마십시오 : 귀하의 의견 import { Router } from '@angular/router';

0

the documentation으로 상태는, [ngClass]는 식의 여러 종류를 기대 : 그

<some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element>

한 문자열 식입니다. 그것은이 ngClass에 해당하지만 전체의 각도 템플릿 문법에없는

[ngClass]="url1 ? 'style1' : 'style2'" 

입니다.

우리는 URL에 따라 서로 다른 클래스 이름을 반환하는 구성 요소에 메서드를 추가 할 수 있습니다
+0

감사합니다! 좀 더 구체적이어야합니다 : 현재 url을 가져 와서 [ngClass]에 전달해야합니다 – mikebrsv

+0

어떤 형식으로 전달 하시겠습니까? 질문 현재 출력과 예상 출력을 업데이트하십시오. 해결하려는 문제는 무엇입니까? 다른 방법으로 해결해야 할 XY 문제가있을 가능성이 큽니다. 라우터가 그들을 처리하기 때문에 대부분의 시간 URL은 각도로 액세스해서는 안됩니다. – estus

0

: 우리는 당신이 찾을 라우터를 사용할 수 있습니다

<div [ngClass]="getClasses()"></div> 
관련 문제