निर्देश कुछ इस तरह दिखाई दे सकता है:
import * as angular from 'angular';
class OnFinishRenderDirective implements angular.IDirective {
public restrict = 'A';
public replace = false;
public link = (
scope: any,
// scope: angular.IScope,
element: angular.IAugmentedJQuery,
attr: any,
modelCtrl: any,
link: angular.ITemplateLinkingFunction) => {
if (scope.$last === true) {
this.$timeout(() => {
scope.$emit('elementRendered');
});
}
}
constructor(private $timeout: angular.ITimeoutService) { }
}
export function onFinishRenderFactory(): angular.IDirectiveFactory {
var directive = ($timeout: angular.ITimeoutService) => new OnFinishRenderDirective($timeout);
directive.$inject = [ '$timeout' ];
return directive;
}
आप इसे आयात करने के लिए है और आप अपने मॉड्यूल को जोड़ना होगा
import { onFinishRenderFactory } from './onFinishRender/onFinishRender.directive';
angular.module('yourModule', [])
.directive('onFinishRender', onFinishRenderFactory())
तो फिर तुम निर्देश कहीं अपने मार्कअप में फेंकना उपयोग कर सकते हैं घटना जब निर्देश दिया गया है।
<div onFinishRender>I am rendered</div>
तुम भी निर्देश DIV है जिसे आप लिंक समारोह में ATTR वस्तु से हड़पने के लिए और अपने $ करने के लिए जोड़ सकते हैं इस विशिष्ट DIV प्रदान करने की पहचान करने के लिए समारोह का उत्सर्जन में एक अतिरिक्त विशेषता जोड़ सकते हैं।
क्या यह आपके प्रश्न का उत्तर देता है?
से नीचे मेरा उत्तर देखें, मैं सेटटाइमआउट के साथ इस समाधान को प्राथमिकता देता हूं, जिससे मुझे ऐसी चीजें करने की अनुमति मिलती है जो किसी पृष्ठ पर विजेट नहीं हैं या ng_if – semiomant
'setTimeout (फ़ंक्शन() { // जो कुछ भी }, 0); यह सही है। धन्यवाद! – Kirkland