I am nearing completion one more non-trivial application using AngularJS. I really like the way it turned out. There were a couple small problems along the way, but I feel that AngularJS is a very good framework and there is a lot of momentum in the AngularJS world.
Full AngularJS app, well almost
My goal was to fully implement this application in AngularJS using REST based services for all server interaction. I accomplished this with one exception: login. Unfortunately, some (all?) browsers only recognize credential auto-completion on form submission. AngularJS intercepts the form submission, so if your application is using AngularJS on the login page browsers will not recognize that a login is taking place and will not prompt users to remember their credentials.
The solution I used was a simple form based authentication page that submitted to the server and set authorization and session cookies appropriately. It felt like a step back technology-wise, but that is only a small piece the site.
Form validation ugliness
The form validation for my small application does seem a bit unwieldy. There were two parts that bothered me. First, the markup itself is pretty verbose. Second, there was a small amount of code duplication in the controllers. I was working on this project alone, so I think it would be useful to see what approaches other people have taken to this problem.
I could have used some AngularJS directives to clean up the HTML markup a bit, but I was more concerned with the controller code.
Hello Protractor, it is nice to meet you
I used Protractor for my end-to-end testing and it was great. Protractor and Jasmine seem pretty decent so far. The only surprise I had was when a Jasmine expectation fails, execution of that test continues. That was a bit unexpected, but was not a huge problem.
In my end-to-end testing I used a little bit of TypeScript and it worked surprisingly well. I might look into using more TypeScript in the future.
With this application nearing completion it is time to re-assess my current situation and take some meaningful steps forward. Hopefully, that will include posting more than once every couple months and some open source work.