I'm stuck on how to access and change an inputs ngModel value using a directive. The outcome of the issue is that the model's address value doesn't update when I select the desired address...it's just set to what I actually typed into the input, rather than final value of the input.
I type '830':
I select '8300 Fauntleroy Way Southwest, Seattle, WA, United States':
Resulting value:
{ address: '830' } Desired value:
{ address: '8300 Fauntleroy Way Southwest, Seattle, WA, United States' } In AngularJS I could do this:
(function() { 'use strict'; angular .module('casemanagerApp') .directive('googleplace', googleplace); function googleplace() { var directive = { require: 'ngModel', link: link }; return directive; function link(scope, element, attrs, model) { var options = { types: [], componentRestrictions: {} }; scope.gPlace = new google.maps.places.Autocomplete(element[0], options); // jshint ignore:line google.maps.event.addListener(scope.gPlace, 'place_changed', function() { // jshint ignore:line scope.$apply(function() { model.$setViewValue(element.val()); }); }); } } })(); But now that I'm trying to convert it Angular 2, I'm a little stuck. Here's what I have so far on the conversion:
/// <reference path="../../../../typings/browser/ambient/googlemaps/index.d.ts"/> import { Directive, ElementRef, OnInit } from '@angular/core'; @Directive({ selector: '[google-places]' }) export class GooglePlaces implements OnInit { constructor(private _el: ElementRef) { } ngOnInit() { let gPlace = new google.maps.places.Autocomplete(this._el.nativeElement); google.maps.event.addListener(gPlace, 'place_changed', () => console.log(this._el.nativeElement)); } } Usage:
<input type="text" ngControl="address" placeholder="Enter a location" [(ngModel)]="subject.address" #address="ngForm" google-places required> The heart of the issue is I don't understand how to do the equivalent of model.$setViewValue(element.val()); in Angular 2.
Any assistance would be greatly appreciated.

