Angular: Accessing Class Variables within Custom Validators

Angular’s built-in validators are great (Required, MinLength, MaxLength, etc.), but you’ll often find yourself needing to test unique UI control use cases. Enter custom validators, a powerful way to accomplish this: validUsernames: AllowedUsername[]; constructor(private fb: FormBuilder, private apiService: ApiService) { } ngOnInit() { this.form = this.fb.group({ // Attach a custom validator to the userName control "userName": [this.userName, this.usernameValidator] } ); } private usernameValidator(c: AbstractControl): { [key: string]: boolean } { // check a property of c, the Control this validator is attached to if (c. Read On →

PhoneGap Blog Guest Post: Hybrid Apps are Overtaking Native

I’m happy to share that I’ve written another guest post for the PhoneGap team’s blog: Hybrid Apps are Overtaking Native In the post, I cover the most popular concerns about hybrid app development from a fresh 2017 perspective: performance, design, frameworks, and tooling. Bottom line: if you last tried PhoneGap/Cordova several years ago, it’s time for another look! I’m really proud of how this article turned out: over 16,000 views and tons of comment replies as of late August. Read On →

"PhoneGap Build Fundamentals" Pluralsight course released!

I’m excited to announce that my Pluralsight course, PhoneGap Build Fundamentals, is now live! This course will teach you the fundamentals of creating cross-platform mobile apps using Adobe’s PhoneGap Build cloud service and HTML, CSS, and JavaScript. Please leave any questions or feedback on the Discussion tab. Thanks for checking it out! Here’s a longer description of the course: The demand for mobile application developers is extremely high. However, learning each platform’s native programming language and toolsets can be a significant, time consuming challenge. Read On →