ummahusla: преобразуйте исходный массив в объект вида: {'2': 3, '4' : 1, 'A': 1}, по нему легко определить все комбинации, основанные на комбинации одинаковых карт.
Faliah: компоненты не заменяют директивы, для работы с DOM всё так же используются они (см. первый абзац: https://docs.angularjs.org/guide/component ). И apply использовать придется в случае, когда идет обработка не-angular событий. Watch почти никогда не нужен, когда дело касается input элементов, т.к. ng-model умеет очень много всего. Кстати я тоже этот плагин цеплял, воспользуйтесь ng-model + parsers/formatters werewolf: у $http сервиса есть transformRequest/transformResponse.
Руслан Шадура: да нет, канвас вещь хорошая, но довольно тяжеловесная. Я не считаю, что стоит делать визуальные фигульки на канвасе, если сайт не исключительно промошный.
Ситуация аналогична с ситуацией, когда внутри конструктора мы пишем this.foo = function() {}; v8 умеет с этим справляться и создает общую функцию для всех экземпляров. (Что кстати не значит, что стоит так делать).
Junior Bee: возьмите какой-то функциональный проект. Да тот же todo лист более функционален, чем landing page. Его и сделайте. Там и формы будут, и списки, и можно чего угодно прикрутить, даже графики какие-нибудь.