我正在尝试实现angular 2 onInit函数,但在控制台中收到以下错误:



有人可以指出我做错了什么吗?

这是我的组件:

import { Component, OnInit } from 'angular2/core';
import { ViewEncapsulation } from 'angular2/core';

@Component({
    selector: 'Landing',
    templateUrl: '/app/views/landing.html',
    styleUrls: ['../app/styles/landing.css'],
    encapsulation: ViewEncapsulation.None
})

export class LandingComponent implements OnInit {

    function checkOverflow() {
        var element = document.querySelector('.appContainer');
        if( (element.offsetHeight < element.scrollHeight) || (element.offsetWidth < element.scrollWidth)){
           // your element have overflow
          console.log('OVERFLOW!');
        }
        else{
          console.log('NO OVERFLOW');
        }
    }

    OnInit() {
        checkOverflow();
    }

}

最佳答案

使用single import而不是两个import语句。如果您使用的是@(候选发行版),还请在@angular/core之前使用rc

import { Component, OnInit, ViewEncapsulation } from '@angular/core';

您应该在组件类ngOnInit类中实现implements OnInit方法
ngOnInit() {
    this.checkOverflow();
}

另外,请勿以当前在 typescript 文件中使用的方式使用function,请将其转换为checkOverflow(){ ... }格式,然后像this.checkOverflow()一样调用它

关于typescript - Angular2-未定义OnInit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37257179/

10-11 23:39