UNPKG

26.1 kBJavaScriptView Raw
1/**
2 * @license
3 * Copyright Google Inc. All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8var __extends = (this && this.__extends) || function (d, b) {
9 for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
10 function __() { this.constructor = d; }
11 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12};
13import { ErrorHandler } from '../src/error_handler';
14import { ListWrapper } from '../src/facade/collection';
15import { unimplemented } from '../src/facade/errors';
16import { stringify } from '../src/facade/lang';
17import { isPromise } from '../src/util/lang';
18import { ApplicationInitStatus } from './application_init';
19import { APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER } from './application_tokens';
20import { Console } from './console';
21import { Injectable, Injector, OpaqueToken, Optional, ReflectiveInjector } from './di';
22import { CompilerFactory } from './linker/compiler';
23import { ComponentFactory } from './linker/component_factory';
24import { ComponentFactoryResolver } from './linker/component_factory_resolver';
25import { wtfCreateScope, wtfLeave } from './profile/profile';
26import { Testability, TestabilityRegistry } from './testability/testability';
27import { NgZone } from './zone/ng_zone';
28var /** @type {?} */ _devMode = true;
29var /** @type {?} */ _runModeLocked = false;
30var /** @type {?} */ _platform;
31/**
32 * Disable Angular's development mode, which turns off assertions and other
33 * checks within the framework.
34 * *
35 * One important assertion this disables verifies that a change detection pass
36 * does not result in additional changes to any bindings (also known as
37 * unidirectional data flow).
38 * *
39 * @return {?}
40 */
41export function enableProdMode() {
42 if (_runModeLocked) {
43 throw new Error('Cannot enable prod mode after platform setup.');
44 }
45 _devMode = false;
46}
47/**
48 * Returns whether Angular is in development mode. After called once,
49 * the value is locked and won't change any more.
50 * *
51 * By default, this is true, unless a user calls `enableProdMode` before calling this.
52 * *
53 * @return {?}
54 */
55export function isDevMode() {
56 _runModeLocked = true;
57 return _devMode;
58}
59/**
60 * A token for third-party components that can register themselves with NgProbe.
61 * *
62 */
63export var NgProbeToken = (function () {
64 /**
65 * @param {?} name
66 * @param {?} token
67 */
68 function NgProbeToken(name, token) {
69 this.name = name;
70 this.token = token;
71 }
72 return NgProbeToken;
73}());
74function NgProbeToken_tsickle_Closure_declarations() {
75 /** @type {?} */
76 NgProbeToken.prototype.name;
77 /** @type {?} */
78 NgProbeToken.prototype.token;
79}
80/**
81 * Creates a platform.
82 * Platforms have to be eagerly created via this function.
83 * *
84 * @param {?} injector
85 * @return {?}
86 */
87export function createPlatform(injector) {
88 if (_platform && !_platform.destroyed) {
89 throw new Error('There can be only one platform. Destroy the previous one to create a new one.');
90 }
91 _platform = injector.get(PlatformRef);
92 var /** @type {?} */ inits = (injector.get(PLATFORM_INITIALIZER, null));
93 if (inits)
94 inits.forEach(function (init) { return init(); });
95 return _platform;
96}
97/**
98 * Creates a factory for a platform
99 * *
100 * @param {?} parentPlatformFactory
101 * @param {?} name
102 * @param {?=} providers
103 * @return {?}
104 */
105export function createPlatformFactory(parentPlatformFactory, name, providers) {
106 if (providers === void 0) { providers = []; }
107 var /** @type {?} */ marker = new OpaqueToken("Platform: " + name);
108 return function (extraProviders) {
109 if (extraProviders === void 0) { extraProviders = []; }
110 if (!getPlatform()) {
111 if (parentPlatformFactory) {
112 parentPlatformFactory(providers.concat(extraProviders).concat({ provide: marker, useValue: true }));
113 }
114 else {
115 createPlatform(ReflectiveInjector.resolveAndCreate(providers.concat(extraProviders).concat({ provide: marker, useValue: true })));
116 }
117 }
118 return assertPlatform(marker);
119 };
120}
121/**
122 * Checks that there currently is a platform
123 * which contains the given token as a provider.
124 * *
125 * @param {?} requiredToken
126 * @return {?}
127 */
128export function assertPlatform(requiredToken) {
129 var /** @type {?} */ platform = getPlatform();
130 if (!platform) {
131 throw new Error('No platform exists!');
132 }
133 if (!platform.injector.get(requiredToken, null)) {
134 throw new Error('A platform with a different configuration has been created. Please destroy it first.');
135 }
136 return platform;
137}
138/**
139 * Destroy the existing platform.
140 * *
141 * @return {?}
142 */
143export function destroyPlatform() {
144 if (_platform && !_platform.destroyed) {
145 _platform.destroy();
146 }
147}
148/**
149 * Returns the current platform.
150 * *
151 * @return {?}
152 */
153export function getPlatform() {
154 return _platform && !_platform.destroyed ? _platform : null;
155}
156/**
157 * The Angular platform is the entry point for Angular on a web page. Each page
158 * has exactly one platform, and services (such as reflection) which are common
159 * to every Angular application running on the page are bound in its scope.
160 * *
161 * A page's platform is initialized implicitly when {@link bootstrap}() is called, or
162 * explicitly by calling {@link createPlatform}().
163 * *
164 * @abstract
165 */
166export var PlatformRef = (function () {
167 function PlatformRef() {
168 }
169 /**
170 * Creates an instance of an `@NgModule` for the given platform
171 * for offline compilation.
172 * *
173 * ## Simple Example
174 * *
175 * ```typescript
176 * my_module.ts:
177 * *
178 * imports: [BrowserModule]
179 * })
180 * class MyModule {}
181 * *
182 * main.ts:
183 * import {MyModuleNgFactory} from './my_module.ngfactory';
184 * import {platformBrowser} from '@angular/platform-browser';
185 * *
186 * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);
187 * ```
188 * *
189 * @param {?} moduleFactory
190 * @return {?}
191 */
192 PlatformRef.prototype.bootstrapModuleFactory = function (moduleFactory) {
193 throw unimplemented();
194 };
195 /**
196 * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.
197 * *
198 * ## Simple Example
199 * *
200 * ```typescript
201 * imports: [BrowserModule]
202 * })
203 * class MyModule {}
204 * *
205 * let moduleRef = platformBrowser().bootstrapModule(MyModule);
206 * ```
207 * @param {?} moduleType
208 * @param {?=} compilerOptions
209 * @return {?}
210 */
211 PlatformRef.prototype.bootstrapModule = function (moduleType, compilerOptions) {
212 if (compilerOptions === void 0) { compilerOptions = []; }
213 throw unimplemented();
214 };
215 /**
216 * Register a listener to be called when the platform is disposed.
217 * @abstract
218 * @param {?} callback
219 * @return {?}
220 */
221 PlatformRef.prototype.onDestroy = function (callback) { };
222 Object.defineProperty(PlatformRef.prototype, "injector", {
223 /**
224 * Retrieve the platform {@link Injector}, which is the parent injector for
225 * every Angular application on the page and provides singleton providers.
226 * @return {?}
227 */
228 get: function () { throw unimplemented(); },
229 enumerable: true,
230 configurable: true
231 });
232 ;
233 /**
234 * Destroy the Angular platform and all Angular applications on the page.
235 * @abstract
236 * @return {?}
237 */
238 PlatformRef.prototype.destroy = function () { };
239 Object.defineProperty(PlatformRef.prototype, "destroyed", {
240 /**
241 * @return {?}
242 */
243 get: function () { throw unimplemented(); },
244 enumerable: true,
245 configurable: true
246 });
247 return PlatformRef;
248}());
249/**
250 * @param {?} errorHandler
251 * @param {?} callback
252 * @return {?}
253 */
254function _callAndReportToErrorHandler(errorHandler, callback) {
255 try {
256 var /** @type {?} */ result = callback();
257 if (isPromise(result)) {
258 return result.catch(function (e) {
259 errorHandler.handleError(e);
260 // rethrow as the exception handler might not do it
261 throw e;
262 });
263 }
264 return result;
265 }
266 catch (e) {
267 errorHandler.handleError(e);
268 // rethrow as the exception handler might not do it
269 throw e;
270 }
271}
272export var PlatformRef_ = (function (_super) {
273 __extends(PlatformRef_, _super);
274 /**
275 * @param {?} _injector
276 */
277 function PlatformRef_(_injector) {
278 _super.call(this);
279 this._injector = _injector;
280 this._modules = [];
281 this._destroyListeners = [];
282 this._destroyed = false;
283 }
284 /**
285 * @param {?} callback
286 * @return {?}
287 */
288 PlatformRef_.prototype.onDestroy = function (callback) { this._destroyListeners.push(callback); };
289 Object.defineProperty(PlatformRef_.prototype, "injector", {
290 /**
291 * @return {?}
292 */
293 get: function () { return this._injector; },
294 enumerable: true,
295 configurable: true
296 });
297 Object.defineProperty(PlatformRef_.prototype, "destroyed", {
298 /**
299 * @return {?}
300 */
301 get: function () { return this._destroyed; },
302 enumerable: true,
303 configurable: true
304 });
305 /**
306 * @return {?}
307 */
308 PlatformRef_.prototype.destroy = function () {
309 if (this._destroyed) {
310 throw new Error('The platform has already been destroyed!');
311 }
312 this._modules.slice().forEach(function (module) { return module.destroy(); });
313 this._destroyListeners.forEach(function (listener) { return listener(); });
314 this._destroyed = true;
315 };
316 /**
317 * @param {?} moduleFactory
318 * @return {?}
319 */
320 PlatformRef_.prototype.bootstrapModuleFactory = function (moduleFactory) {
321 return this._bootstrapModuleFactoryWithZone(moduleFactory, null);
322 };
323 /**
324 * @param {?} moduleFactory
325 * @param {?} ngZone
326 * @return {?}
327 */
328 PlatformRef_.prototype._bootstrapModuleFactoryWithZone = function (moduleFactory, ngZone) {
329 var _this = this;
330 // Note: We need to create the NgZone _before_ we instantiate the module,
331 // as instantiating the module creates some providers eagerly.
332 // So we create a mini parent injector that just contains the new NgZone and
333 // pass that as parent to the NgModuleFactory.
334 if (!ngZone)
335 ngZone = new NgZone({ enableLongStackTrace: isDevMode() });
336 // Attention: Don't use ApplicationRef.run here,
337 // as we want to be sure that all possible constructor calls are inside `ngZone.run`!
338 return ngZone.run(function () {
339 var /** @type {?} */ ngZoneInjector = ReflectiveInjector.resolveAndCreate([{ provide: NgZone, useValue: ngZone }], _this.injector);
340 var /** @type {?} */ moduleRef = (moduleFactory.create(ngZoneInjector));
341 var /** @type {?} */ exceptionHandler = moduleRef.injector.get(ErrorHandler, null);
342 if (!exceptionHandler) {
343 throw new Error('No ErrorHandler. Is platform module (BrowserModule) included?');
344 }
345 moduleRef.onDestroy(function () { return ListWrapper.remove(_this._modules, moduleRef); });
346 ngZone.onError.subscribe({ next: function (error) { exceptionHandler.handleError(error); } });
347 return _callAndReportToErrorHandler(exceptionHandler, function () {
348 var /** @type {?} */ initStatus = moduleRef.injector.get(ApplicationInitStatus);
349 return initStatus.donePromise.then(function () {
350 _this._moduleDoBootstrap(moduleRef);
351 return moduleRef;
352 });
353 });
354 });
355 };
356 /**
357 * @param {?} moduleType
358 * @param {?=} compilerOptions
359 * @return {?}
360 */
361 PlatformRef_.prototype.bootstrapModule = function (moduleType, compilerOptions) {
362 if (compilerOptions === void 0) { compilerOptions = []; }
363 return this._bootstrapModuleWithZone(moduleType, compilerOptions, null);
364 };
365 /**
366 * @param {?} moduleType
367 * @param {?=} compilerOptions
368 * @param {?} ngZone
369 * @param {?=} componentFactoryCallback
370 * @return {?}
371 */
372 PlatformRef_.prototype._bootstrapModuleWithZone = function (moduleType, compilerOptions, ngZone, componentFactoryCallback) {
373 var _this = this;
374 if (compilerOptions === void 0) { compilerOptions = []; }
375 var /** @type {?} */ compilerFactory = this.injector.get(CompilerFactory);
376 var /** @type {?} */ compiler = compilerFactory.createCompiler(Array.isArray(compilerOptions) ? compilerOptions : [compilerOptions]);
377 // ugly internal api hack: generate host component factories for all declared components and
378 // pass the factories into the callback - this is used by UpdateAdapter to get hold of all
379 // factories.
380 if (componentFactoryCallback) {
381 return compiler.compileModuleAndAllComponentsAsync(moduleType)
382 .then(function (_a) {
383 var ngModuleFactory = _a.ngModuleFactory, componentFactories = _a.componentFactories;
384 componentFactoryCallback(componentFactories);
385 return _this._bootstrapModuleFactoryWithZone(ngModuleFactory, ngZone);
386 });
387 }
388 return compiler.compileModuleAsync(moduleType)
389 .then(function (moduleFactory) { return _this._bootstrapModuleFactoryWithZone(moduleFactory, ngZone); });
390 };
391 /**
392 * @param {?} moduleRef
393 * @return {?}
394 */
395 PlatformRef_.prototype._moduleDoBootstrap = function (moduleRef) {
396 var /** @type {?} */ appRef = moduleRef.injector.get(ApplicationRef);
397 if (moduleRef.bootstrapFactories.length > 0) {
398 moduleRef.bootstrapFactories.forEach(function (compFactory) { return appRef.bootstrap(compFactory); });
399 }
400 else if (moduleRef.instance.ngDoBootstrap) {
401 moduleRef.instance.ngDoBootstrap(appRef);
402 }
403 else {
404 throw new Error(("The module " + stringify(moduleRef.instance.constructor) + " was bootstrapped, but it does not declare \"@NgModule.bootstrap\" components nor a \"ngDoBootstrap\" method. ") +
405 "Please define one of these.");
406 }
407 };
408 PlatformRef_.decorators = [
409 { type: Injectable },
410 ];
411 /** @nocollapse */
412 PlatformRef_.ctorParameters = function () { return [
413 { type: Injector, },
414 ]; };
415 return PlatformRef_;
416}(PlatformRef));
417function PlatformRef__tsickle_Closure_declarations() {
418 /** @type {?} */
419 PlatformRef_.decorators;
420 /**
421 * @nocollapse
422 * @type {?}
423 */
424 PlatformRef_.ctorParameters;
425 /** @type {?} */
426 PlatformRef_.prototype._modules;
427 /** @type {?} */
428 PlatformRef_.prototype._destroyListeners;
429 /** @type {?} */
430 PlatformRef_.prototype._destroyed;
431 /** @type {?} */
432 PlatformRef_.prototype._injector;
433}
434/**
435 * A reference to an Angular application running on a page.
436 * *
437 * For more about Angular applications, see the documentation for {@link bootstrap}.
438 * *
439 * @abstract
440 */
441export var ApplicationRef = (function () {
442 function ApplicationRef() {
443 }
444 /**
445 * Bootstrap a new component at the root level of the application.
446 * *
447 * ### Bootstrap process
448 * *
449 * When bootstrapping a new root component into an application, Angular mounts the
450 * specified application component onto DOM elements identified by the [componentType]'s
451 * selector and kicks off automatic change detection to finish initializing the component.
452 * *
453 * ### Example
454 * {@example core/ts/platform/platform.ts region='longform'}
455 * @abstract
456 * @param {?} componentFactory
457 * @return {?}
458 */
459 ApplicationRef.prototype.bootstrap = function (componentFactory) { };
460 /**
461 * Invoke this method to explicitly process change detection and its side-effects.
462 * *
463 * In development mode, `tick()` also performs a second change detection cycle to ensure that no
464 * further changes are detected. If additional changes are picked up during this second cycle,
465 * bindings in the app have side-effects that cannot be resolved in a single change detection
466 * pass.
467 * In this case, Angular throws an error, since an Angular application can only have one change
468 * detection pass during which all change detection must complete.
469 * @abstract
470 * @return {?}
471 */
472 ApplicationRef.prototype.tick = function () { };
473 Object.defineProperty(ApplicationRef.prototype, "componentTypes", {
474 /**
475 * Get a list of component types registered to this application.
476 * This list is populated even before the component is created.
477 * @return {?}
478 */
479 get: function () { return (unimplemented()); },
480 enumerable: true,
481 configurable: true
482 });
483 ;
484 Object.defineProperty(ApplicationRef.prototype, "components", {
485 /**
486 * Get a list of components registered to this application.
487 * @return {?}
488 */
489 get: function () { return (unimplemented()); },
490 enumerable: true,
491 configurable: true
492 });
493 ;
494 /**
495 * Attaches a view so that it will be dirty checked.
496 * The view will be automatically detached when it is destroyed.
497 * This will throw if the view is already attached to a ViewContainer.
498 * @param {?} view
499 * @return {?}
500 */
501 ApplicationRef.prototype.attachView = function (view) { unimplemented(); };
502 /**
503 * Detaches a view from dirty checking again.
504 * @param {?} view
505 * @return {?}
506 */
507 ApplicationRef.prototype.detachView = function (view) { unimplemented(); };
508 Object.defineProperty(ApplicationRef.prototype, "viewCount", {
509 /**
510 * Returns the number of attached views.
511 * @return {?}
512 */
513 get: function () { return unimplemented(); },
514 enumerable: true,
515 configurable: true
516 });
517 return ApplicationRef;
518}());
519export var ApplicationRef_ = (function (_super) {
520 __extends(ApplicationRef_, _super);
521 /**
522 * @param {?} _zone
523 * @param {?} _console
524 * @param {?} _injector
525 * @param {?} _exceptionHandler
526 * @param {?} _componentFactoryResolver
527 * @param {?} _initStatus
528 * @param {?} _testabilityRegistry
529 * @param {?} _testability
530 */
531 function ApplicationRef_(_zone, _console, _injector, _exceptionHandler, _componentFactoryResolver, _initStatus, _testabilityRegistry, _testability) {
532 var _this = this;
533 _super.call(this);
534 this._zone = _zone;
535 this._console = _console;
536 this._injector = _injector;
537 this._exceptionHandler = _exceptionHandler;
538 this._componentFactoryResolver = _componentFactoryResolver;
539 this._initStatus = _initStatus;
540 this._testabilityRegistry = _testabilityRegistry;
541 this._testability = _testability;
542 this._bootstrapListeners = [];
543 this._rootComponents = [];
544 this._rootComponentTypes = [];
545 this._views = [];
546 this._runningTick = false;
547 this._enforceNoNewChanges = false;
548 this._enforceNoNewChanges = isDevMode();
549 this._zone.onMicrotaskEmpty.subscribe({ next: function () { _this._zone.run(function () { _this.tick(); }); } });
550 }
551 /**
552 * @param {?} viewRef
553 * @return {?}
554 */
555 ApplicationRef_.prototype.attachView = function (viewRef) {
556 var /** @type {?} */ view = ((viewRef)).internalView;
557 this._views.push(view);
558 view.attachToAppRef(this);
559 };
560 /**
561 * @param {?} viewRef
562 * @return {?}
563 */
564 ApplicationRef_.prototype.detachView = function (viewRef) {
565 var /** @type {?} */ view = ((viewRef)).internalView;
566 ListWrapper.remove(this._views, view);
567 view.detach();
568 };
569 /**
570 * @param {?} componentOrFactory
571 * @return {?}
572 */
573 ApplicationRef_.prototype.bootstrap = function (componentOrFactory) {
574 var _this = this;
575 if (!this._initStatus.done) {
576 throw new Error('Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.');
577 }
578 var /** @type {?} */ componentFactory;
579 if (componentOrFactory instanceof ComponentFactory) {
580 componentFactory = componentOrFactory;
581 }
582 else {
583 componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentOrFactory);
584 }
585 this._rootComponentTypes.push(componentFactory.componentType);
586 var /** @type {?} */ compRef = componentFactory.create(this._injector, [], componentFactory.selector);
587 compRef.onDestroy(function () { _this._unloadComponent(compRef); });
588 var /** @type {?} */ testability = compRef.injector.get(Testability, null);
589 if (testability) {
590 compRef.injector.get(TestabilityRegistry)
591 .registerApplication(compRef.location.nativeElement, testability);
592 }
593 this._loadComponent(compRef);
594 if (isDevMode()) {
595 this._console.log("Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.");
596 }
597 return compRef;
598 };
599 /**
600 * @param {?} componentRef
601 * @return {?}
602 */
603 ApplicationRef_.prototype._loadComponent = function (componentRef) {
604 this.attachView(componentRef.hostView);
605 this.tick();
606 this._rootComponents.push(componentRef);
607 // Get the listeners lazily to prevent DI cycles.
608 var /** @type {?} */ listeners = (this._injector.get(APP_BOOTSTRAP_LISTENER, [])
609 .concat(this._bootstrapListeners));
610 listeners.forEach(function (listener) { return listener(componentRef); });
611 };
612 /**
613 * @param {?} componentRef
614 * @return {?}
615 */
616 ApplicationRef_.prototype._unloadComponent = function (componentRef) {
617 this.detachView(componentRef.hostView);
618 ListWrapper.remove(this._rootComponents, componentRef);
619 };
620 /**
621 * @return {?}
622 */
623 ApplicationRef_.prototype.tick = function () {
624 if (this._runningTick) {
625 throw new Error('ApplicationRef.tick is called recursively');
626 }
627 var /** @type {?} */ scope = ApplicationRef_._tickScope();
628 try {
629 this._runningTick = true;
630 this._views.forEach(function (view) { return view.ref.detectChanges(); });
631 if (this._enforceNoNewChanges) {
632 this._views.forEach(function (view) { return view.ref.checkNoChanges(); });
633 }
634 }
635 finally {
636 this._runningTick = false;
637 wtfLeave(scope);
638 }
639 };
640 /**
641 * @return {?}
642 */
643 ApplicationRef_.prototype.ngOnDestroy = function () {
644 // TODO(alxhub): Dispose of the NgZone.
645 this._views.slice().forEach(function (view) { return view.destroy(); });
646 };
647 Object.defineProperty(ApplicationRef_.prototype, "viewCount", {
648 /**
649 * @return {?}
650 */
651 get: function () { return this._views.length; },
652 enumerable: true,
653 configurable: true
654 });
655 Object.defineProperty(ApplicationRef_.prototype, "componentTypes", {
656 /**
657 * @return {?}
658 */
659 get: function () { return this._rootComponentTypes; },
660 enumerable: true,
661 configurable: true
662 });
663 Object.defineProperty(ApplicationRef_.prototype, "components", {
664 /**
665 * @return {?}
666 */
667 get: function () { return this._rootComponents; },
668 enumerable: true,
669 configurable: true
670 });
671 /** @internal */
672 ApplicationRef_._tickScope = wtfCreateScope('ApplicationRef#tick()');
673 ApplicationRef_.decorators = [
674 { type: Injectable },
675 ];
676 /** @nocollapse */
677 ApplicationRef_.ctorParameters = function () { return [
678 { type: NgZone, },
679 { type: Console, },
680 { type: Injector, },
681 { type: ErrorHandler, },
682 { type: ComponentFactoryResolver, },
683 { type: ApplicationInitStatus, },
684 { type: TestabilityRegistry, decorators: [{ type: Optional },] },
685 { type: Testability, decorators: [{ type: Optional },] },
686 ]; };
687 return ApplicationRef_;
688}(ApplicationRef));
689function ApplicationRef__tsickle_Closure_declarations() {
690 /** @type {?} */
691 ApplicationRef_._tickScope;
692 /** @type {?} */
693 ApplicationRef_.decorators;
694 /**
695 * @nocollapse
696 * @type {?}
697 */
698 ApplicationRef_.ctorParameters;
699 /** @type {?} */
700 ApplicationRef_.prototype._bootstrapListeners;
701 /** @type {?} */
702 ApplicationRef_.prototype._rootComponents;
703 /** @type {?} */
704 ApplicationRef_.prototype._rootComponentTypes;
705 /** @type {?} */
706 ApplicationRef_.prototype._views;
707 /** @type {?} */
708 ApplicationRef_.prototype._runningTick;
709 /** @type {?} */
710 ApplicationRef_.prototype._enforceNoNewChanges;
711 /** @type {?} */
712 ApplicationRef_.prototype._zone;
713 /** @type {?} */
714 ApplicationRef_.prototype._console;
715 /** @type {?} */
716 ApplicationRef_.prototype._injector;
717 /** @type {?} */
718 ApplicationRef_.prototype._exceptionHandler;
719 /** @type {?} */
720 ApplicationRef_.prototype._componentFactoryResolver;
721 /** @type {?} */
722 ApplicationRef_.prototype._initStatus;
723 /** @type {?} */
724 ApplicationRef_.prototype._testabilityRegistry;
725 /** @type {?} */
726 ApplicationRef_.prototype._testability;
727}
728//# sourceMappingURL=application_ref.js.map
\No newline at end of file