Skip to content

Instantly share code, notes, and snippets.

View NetanelBasal's full-sized avatar
🎯
Focusing

Netanel Basal NetanelBasal

🎯
Focusing
View GitHub Profile
validateUniqueEmailObservable( email : string ) {
return new Observable(observer => {
if( email === "alreadyExistsEmail@gmail.com" ) {
observer.next({asyncInvalid: true});
} else {
observer.next(null);
}
});
}
validate( c : AbstractControl ) {
return this.validateUniqueEmailObservable(c.value);
}
validate( c : AbstractControl ) {
return this.validateUniqueEmailObservable(c.value).first();
}
validate( c : AbstractControl ) {
return this.validateUniqueEmailObservable(c.value).debounceTime(500).distinctUntilChange().first();
}
import { Component } from '@angular/core';
import { ViewChild } from "@angular/core/src/metadata/di";
@Component({
selector: 'app-root',
templateUrl: '<input type="text" #input>'
})
export class AppComponent {
@ViewChild("input") input;
import { Directive, Renderer, ElementRef } from '@angular/core';
@Directive({
selector: '[exploreRenderer]'
})
export class ExploreRendererDirective {
private nativeElement : Node;
constructor( private renderer : Renderer, private element : ElementRef ) {
this.nativeElement = element.nativeElement;
}
}
ngAfterContentInit() {
let inputElement = this.renderer.createElement(this.nativeElement, "input");
this.renderer.setElementAttribute(inputElement, "value", "Hello from renderer");
this.renderer.invokeElementMethod(inputElement, "focus", []);
}
ngAfterContentInit() {
let buttonElement = this.renderer.createElement(this.nativeElement, "button");
this.renderer.createText(buttonElement, "Click me!");
this.renderer.setElementProperty(buttonElement, "disabled", true);
this.renderer.listen(buttonElement, "click", ( event ) => console.log(event));
this.renderer.setElementClass(buttonElement, "btn-large", true);
this.renderer.setElementStyle(buttonElement, "backgroundColor", "yellow");
}
let input = document.querySelector('input[type="text"]');
let button = document.querySelector('button');
let h1 = document.querySelector('h1');
button.addEventListener('click', () => {
emitter.emit('event:name-changed', {name: input.value});
});
let emitter = new EventEmitter();
emitter.subscribe('event:name-changed', data => {
class EventEmitter {
constructor() {
this.events = {};
}
}