refactor(example): refactor forward_ref example into a spec and unignore example specs (#11088)
This commit is contained in:

committed by
Victor Berchet

parent
e220a80093
commit
27539c8b80
@ -1,35 +0,0 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ForwardRefFn, Inject, ReflectiveInjector, forwardRef, resolveForwardRef} from '@angular/core';
|
||||
|
||||
|
||||
// #docregion forward_ref_fn
|
||||
var ref = forwardRef(() => Lock);
|
||||
// #enddocregion
|
||||
|
||||
// #docregion forward_ref
|
||||
class Door {
|
||||
lock: Lock;
|
||||
constructor(@Inject(forwardRef(() => Lock)) lock: Lock) { this.lock = lock; }
|
||||
}
|
||||
|
||||
// Only at this point Lock is defined.
|
||||
class Lock {}
|
||||
|
||||
var injector = ReflectiveInjector.resolveAndCreate([Door, Lock]);
|
||||
var door = injector.get(Door);
|
||||
expect(door instanceof Door).toBe(true);
|
||||
expect(door.lock instanceof Lock).toBe(true);
|
||||
// #enddocregion
|
||||
|
||||
// #docregion resolve_forward_ref
|
||||
ref = forwardRef(() => 'refValue');
|
||||
expect(resolveForwardRef(ref)).toEqual('refValue');
|
||||
expect(resolveForwardRef('regularValue')).toEqual('regularValue');
|
||||
// #enddocregion
|
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ForwardRefFn, Inject, ReflectiveInjector, forwardRef, resolveForwardRef} from '@angular/core';
|
||||
|
||||
export function main() {
|
||||
describe('forwardRef examples', () => {
|
||||
it('ForwardRefFn example works', () => {
|
||||
// #docregion forward_ref_fn
|
||||
let ref = forwardRef(() => Lock);
|
||||
// #enddocregion
|
||||
expect(ref).not.toBeNull();
|
||||
|
||||
class Lock {}
|
||||
});
|
||||
|
||||
it('can be used to inject a class defined later', () => {
|
||||
// #docregion forward_ref
|
||||
class Door {
|
||||
lock: Lock;
|
||||
|
||||
// Door attempts to inject Lock, despite it not being defined yet.
|
||||
// forwardRef makes this possible.
|
||||
constructor(@Inject(forwardRef(() => Lock)) lock: Lock) { this.lock = lock; }
|
||||
}
|
||||
|
||||
// Only at this point Lock is defined.
|
||||
class Lock {}
|
||||
|
||||
let injector = ReflectiveInjector.resolveAndCreate([Door, Lock]);
|
||||
let door = injector.get(Door);
|
||||
expect(door instanceof Door).toBeTruthy();
|
||||
expect(door.lock instanceof Lock).toBeTruthy();
|
||||
// #enddocregion
|
||||
});
|
||||
|
||||
it('can be unwrapped', () => {
|
||||
// #docregion resolve_forward_ref
|
||||
let ref = forwardRef(() => 'refValue');
|
||||
expect(resolveForwardRef(ref)).toEqual('refValue');
|
||||
expect(resolveForwardRef('regularValue')).toEqual('regularValue');
|
||||
// #enddocregion
|
||||
});
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user