/// A wrapper around a native element inside of a View.
///
/// An `ElementRef` is backed by a render-specific element. In the browser, this
/// is usually a DOM element.
// Note: We don't expose things like `Injector`, `ViewContainer`, ... here, i.e.
// users have to ask for what they need. With that, we can build better analysis
// tools and could do better codegen in the future.
class ElementRef {
  /// The underlying native element or `null` if direct access to native
  /// elements is not supported (e.g. when the application runs in a web
  /// worker).
  ///
  /// Use with caution: Use this API as the last resort when direct access to
  /// DOM is needed. Use templating and data-binding provided by Angular
  /// instead. Alternatively you take a look at [Renderer] which provides API
  /// that can safely be used even when direct access to native elements is not
  /// supported.
  ///
  /// Relying on direct DOM access creates tight coupling between your
  /// application and rendering layers which will make it impossible to separate
  /// the two and deploy your application into a web worker.
  dynamic nativeElement;
  ElementRef(dynamic nativeElement) {
    this.nativeElement = nativeElement;
  }
}
