저는 NG2로 새롭고 기본 Slide Up/Down 효과를 추가하려고하는데 기본 Bootstrap 4 Dropdown 구성 요소를 추가하려고합니다.각도 2, Jscery를 사용하여 부트 스트랩 조작
부트 스트랩 드롭 다운 구성 요소에는 2 개의 Jquery Listener 인 $(el).on('show.bs.dropdown')
과 $(el).on('hide.bs.dropdown')
이 있습니다. 그래서이 효과를 추가하기위한 지침을 만들어 : 오류가 따라 트리거되지
import { Directive, OnInit, AfterViewChecked, ElementRef, Input } from '@angular/core';
import * as $ from 'jquery';
@Directive({
selector: '[appDropDownAnimate]'
})
export class DropDownAnimateDirective implements AfterViewChecked {
@Input()
appDropDownAnimate: boolean;
private el = this.ElementRef.nativeElement;
constructor(private ElementRef: ElementRef) {
}
ngAfterViewChecked() {
const el = this.el;
debugger;
$(el).on('show.bs.dropdown',
(cb) => {
$(el).find('.dropdown-menu').first().stop(true, true).slideDown('fast');
});
$(el).on('hide.bs.dropdown',
(cb) => {
$(el).find('.dropdown-menu').first().stop(true, true).slideUp('fast');
});
}
}
있지만 효과가 없습니다 : /합니다. 그러나!!! 디버거 지점에서 브라우저가 고정되어있는 동안 콘솔에 코드를 복사/붙여 넣으면 작동합니다. 따라서 코드가 옳다는 것이 확실하기 때문에 실제로 좌절감을 느낍니다.하지만 코드 정의 내에서 작동하지 않는 이유를 알 수 없습니다.
추신 : DOM 렌더링 문제인지 확인하기 위해 setTimeout에 포장하려고 시도했지만 작동하지 않았습니다. 나는 또한 모든 NG2 Lifehooks를 시도했다.
누구든지이 문제를 해결하는 데 도움이 될 수 있으며이 이상한 행동의 이유를 나에게 설명하면 매우 감사하게 생각합니다.
SPECS :
부트 스트랩 4, 각도 4.3, JQuery와 3.2.1
당신은 현재 가지고있는 오류 외에 모든 것을 말했습니다! 콘솔 예외를 게시 할 수 있습니까? 또한 AfterViewChecked 대신 AfterViewInit을 사용해야합니다! – Fals
오류가 없습니다. 슬라이드가 작동하지 않습니다. /. 그러나 복사/붙여 넣기 '$ (el) .on ('show.bs.dropdown', (cb) => { $ (el) .find ('드롭 다운 메뉴'). stop (true, true) .slideDown ('fast'); }); $ (el) .on ('hide.bs.dropdown', (>)) .find ('. 드롭 다운 메뉴'). slideUp ('fast'); }); ' 브라우저가 고정 된 디버깅 시점에서 그것은 작동하기 시작합니다 –
AfterViewInit은 완전히로드 된보기를 garant하고 DOM을 조작 할 수 있어야합니다. – Fals